首页 > 解决方案 > 为什么 fetch().json() 错误不会触发 window.onerror?

问题描述

下面的代码不会触发 window.onerror,尽管 json() 失败,因为端点没有返回有效的 json,并且没有人捕捉到错误,那么为什么不调用 window.onerror?jsfiddle:https ://jsfiddle.net/f287sn05/

代码:

window.onerror=function(error){
    alert("errorhandler 1: "+error);
}
if(1){
window.addEventListener("error",function(error){
    alert("errorhandler 2: "+error);
});
}

(async function(){
let foo= ((await ( await fetch("/no_json_plz_i_want_an_error")).json()));
})();

标签: javascripterror-handlingfetch

解决方案


要捕获异步函数中的错误,您可以使用 try catch 块,检查一下:

(async function(){
  try{
    let foo= ((await ( await fetch("/no_json_plz_i_want_an_error")).json()));
  }
  catch(error){
    console.log(error)
  }
})();


推荐阅读