如何在googletag.cmd.push调用googletag.display时捕获运行错误
实现方案
你可以选择以下任意一种方案实现错误捕获,按需适配你的项目场景:
- 方案1:单调用点侵入式捕获(最简便,适合调用量少的场景)
直接在googletag.cmd.push的回调逻辑内加try-catch包裹即可:
googletag.cmd.push(function() { try { googletag.display('div-id'); } catch (err) { // 自定义错误处理逻辑,比如日志打印、错误上报等 console.error('广告位渲染失败,对应slot未提前定义:', err); } });
- 方案2:全局统一拦截(适合项目内存在大量
googletag.display调用的场景)
重写原生googletag.display方法,全局统一做错误捕获,不需要修改原有业务调用代码:
// 先备份原始display方法 const originDisplay = googletag.display; googletag.display = function (divId) { try { return originDisplay.apply(this, arguments); } catch (err) { console.error(`广告位${divId}渲染异常:`, err); // 全局错误处理逻辑写在这里 } } // 原有调用代码无需改动 googletag.cmd.push(function() { googletag.display('div-id'); });
- 方案3:封装公共调用方法(避免重写原生方法的潜在风险)
封装独立的安全调用方法,所有广告位渲染统一走封装逻辑:
function renderAdSafe(divId) { googletag.cmd.push(function() { try { googletag.display(divId); } catch (err) { console.error(`广告位${divId}加载失败:`, err); } }) } // 业务侧直接调用封装好的方法即可 renderAdSafe('div-id');
内容的提问来源于stack exchange,提问作者radren
相关产品推荐
相关产品推荐

