window.onerror
- 全局监听所有JS错误
- 但它是JS级别的,识别不了Vue组件信息
- 捕捉一些Vue监听不到的错误
- 可以捕捉到异步错误
mounted() {
window.onerror = function(msg, source, line, column, error) {
console.info(msg, source, line, column, error)
}
}
errorCaptured生命周期
- 监听所有下级组件的错误
- 返回false会阻止错误向上的传播
- 无法捕获到异步的错误,需要靠window.error处理
errorCaptured(err, vm, info) => {
console.info('errorCaptured----', err, vm, info)
return false
}
errorHandler配置
- Vue全局错误监听,所有组件错误都会汇总到这里
- 但errorCaptured返回false,不会传播到这里
const app = createApp(App)
app.config.errorHandler = (error, vm, info) => {
console.info('errorHandler---', error, vm, info)
}
app.use(router).mount('#app')
onunhandledrejection
window.onunhandledrejection = function(e) {
console.log(e.reason);
}
总结
- errprCaptured监听下级组件错误,返回false阻止向上传播
- errorHandler监听全局Vue组件的错误
- window.onerror监听其它JS错误,如异步