开发
API

tt.onError

基础库 1.46.0 开始支持本方法,低版本需做 兼容处理。这是一个同步方法。

监听小程序错误事件,如脚本错误或 API 调用报错等。该事件与 App.onError 的回调时机与参数一致。

参数说明

function callback

参数为回调函数。

参数参数类型说明
回调函数function错误事件的回调函数

回调函数参数说明:

参数参数类型说明
errorstring错误信息

扫码体验

请使用字节宿主APP扫码

代码示例

开发者工具中预览

【代码示例 1】:用户主动抛出错误

<!-- index.ttml -->
<view>
  <button type="default" size="default" bindtap="handleTap">Error</button>
</view>
Page({
  onLoad: function () {
    tt.onError(function (e) {
      // 监听到在 handleTap 中的 throw error
      // 打印出来的结果是
      // USER_RUNTIME_ERROR: at pages/index/index tap event handleTap error
      console.log(e);
    });
  },
  handleTap() {
    throw new Error("handleTap error"); // 当触发该函数时,会报错 Uncaught Error: handleTap error
  },
});

【代码示例 2】: 用户代码运行错误

<!-- index.ttml -->
<view>
  <button type="default" size="default" bindtap="handleTap">Error</button>
</view>
// index.js
Page({
  onLoad: function () {
    tt.onError(function (e) {
      // 监听到在 handleTap 中的代码报错
      // 打印出来的结果是
      // USER_RUNTIME_ERROR: at pages/index/index tap event a is not defined
      console.log(e);
    });
  },
  handleTap() {
    console.log(a); // 当触发该函数时,会报错  Uncaught ReferenceError: a is not defined
  },
});

【代码示例 3】: 在 page 或者 component 的生命周期中使用

// page.js
Page({
  onLoad: function () {
    tt.onError(this.handleError);
  }onHide: function () {
    // 取消错误监听
    tt.offError(this.handleError);
  }handleError(e) {
    console.log('page error', e);
  }
});

// component.js
Component({
  created: function () {
    // 添加错误监听
    tt.onError(function(e) {
      console.log('component error', e);
    })
  }
});

Bug & Tip

  • Tip:内部使用 tt.onError 会被外层中的 tt.onError 和 page.js 中的 onError 监听到。例如:组件中使用 tt.onError 监听到的报错,app.js 中的 onError 方法和 page.js 中的 tt.onError 也会监听到。
  • Tip:使用 tt.onError 监听页面报错,如果在多个页面开启错误监听并且没有关闭,则页面报错时会触发多个监听事件,建议在页面关闭时调用 tt.offError 关闭监听。
  • Tip:使用 App 的生命周期函数 App.onError 能监听到所有的页面报错,与使用tt.onError的作用相同,只是触发方式不同。在这种情况下,使用 tt.onError可以做到只监听特定页面的错误;而 App.onError 的监听的范围则是整个小程序 。
点击纠错
评价此篇文档