JS 中执行异常错误捕获方式区别

73 阅读1分钟

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 任务

11d6a6765d621d83855a93dea015e083.png