try..catch 没有捕捉到异步/等待错误
Posted
技术标签:
【中文标题】try..catch 没有捕捉到异步/等待错误【英文标题】:try..catch not catching async/await errors 【发布时间】:2016-01-26 02:24:36 【问题描述】:也许我误解了使用async/await
捕获错误应该如何从诸如https://jakearchibald.com/2014/es7-async-functions/ 和此http://pouchdb.com/2015/03/05/taming-the-async-beast-with-es7.html 之类的文章中起作用,但我的catch
块没有捕获400/500。
async () =>
let response
try
let response = await fetch('not-a-real-url')
catch (err)
// not jumping in here.
console.log(err)
()
example on codepen if it helps
【问题讨论】:
AFAK fetch api 不考虑 400/500 错误 【参考方案1】:400/500 不是错误,而是响应。只有出现网络问题时,您才会收到异常(拒绝)。
当服务器应答时,你必须检查它是否是good:
try
let response = await fetch('not-a-real-url')
if (!response.ok) // or check for response.status
throw new Error(response.statusText);
let body = await response.text(); // or .json() or whatever
// process body
catch (err)
console.log(err)
【讨论】:
以上是关于try..catch 没有捕捉到异步/等待错误的主要内容,如果未能解决你的问题,请参考以下文章
在 ExpressJS 响应中返回异步等待 try/catch 抛出错误 [重复]