try catch
只能捕获运行时错误,不能捕获语法错误,可以拿到出错信息,堆栈等。
try catch只能捕获同步错误,因为本身是同步执行的,以下方式无效:
try {
setTimeout(()=> {
throw ''
})
} catch(e) {
console.log(e)
}
正确方式:
setTimeout(() => {
try {
throw ''
} catch(e) {
console.log(e)
}
})
window.onerror
可以捕获语法错误,也可以捕获运行时错误,可以拿到出错信息,堆栈。
window.addEventListener('error')
比 onerror 可以多拿到资源加载错误
window.addEventListener('unhandledrejection')
只能处理 Promise 任务和 async 任务