tt.onError
基础库 1.46.0 开始支持本方法,低版本需做 兼容处理。这是一个同步方法。
监听小程序错误事件,如脚本错误或 API 调用报错等。该事件与 App.onError 的回调时机与参数一致。
参数说明
function callback
参数为回调函数。
参数 | 参数类型 | 说明 |
---|---|---|
回调函数 | function | 错误事件的回调函数 |
回调函数参数说明:
参数 | 参数类型 | 说明 |
---|---|---|
error | string | 错误信息 |
扫码体验
请使用字节宿主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
的监听的范围则是整个小程序 。
点击纠错
评价此篇文档