You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:36:04