try { throw new Error(3) } catch (e) { console.log(e) } try { setTimeout(function () { throw new Error(5) }, 100) } catch (e) { console.log(e) }
以上代码中,在浏览器是分别输出Error: 3(正常打印出错误实例,未报错)和 Uncaught Error: 5(一个未捕获错误):
原因:以上例子中第二个try catch捕获不到错误,因为不在
要捕获到异常,必须在throw new Error的直接外层用try catch包起来才行:
setTimeout(()=>{ try{ throw new Error('fail'); }catch (e){ console.log(e); } },1000);