javascript - 在异步函数中捕获未捕获的异常 (Javascript)

标签 javascript exception async-await

<分区>

目前我有这样的代码:

window.onerror = function() {
    // Send some debug info about the defective error handling,
    // so that it may be fixed
};

处理未捕获的异常。不幸的是,这不适用于 async 函数。例如,如果我们在下面调用 fooasync():

async function fooasync() {
    throw 'Catch me!';
}

然后异常(如果未被捕获)将不会被 window.onerror catch-all...

我已经完成了必要的搜索并且大部分都得到了答案,“这是不可能的,无论如何,这会很糟糕,你应该明确地捕获它。”我当然同意,但是如果您不小心没有将 async 函数包装在 try...catch 中怎么办?

作为一个有效用例的示例:我使用 window.onerror 处理程序向我发送调试电子邮件,让我知道使用我的任何东西的人都出现了可怕的错误。太好了,至少我知道了这个问题:现在我可以解决这个问题了(甚至可以用显式的 try...catch 修复损坏的错误处理)。但是,在 async 函数的情况下,我什至没有办法意识到这个问题(除了有人提示它没有按照预期的方式工作)。

是否可以捕获这些async未捕获的异常?

最佳答案

onerror类似,还有一个onunhandledrejection,当一个Promise拒绝并且没有处理程序附加到它时会被触发。 Read on on MDN

关于javascript - 在异步函数中捕获未捕获的异常 (Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55249803/

相关文章:

javascript - Angular.js ng-repeat 跨多个元素

javascript - 使用 Node.js 在 JSON 文件中写入/添加数据

python - 如何在 Python 中捕获 EINTR?

java - 哪个更好 - 抛出异常或事先检查错误

c# - 如何正确等待无法等待的操作完成

javascript长参数列表;寻找替代品

javascript - 在 jQuery 中使用像素约束还原可拖动对象

java日志异常类型

javascript - 使用异步等待时无法获取对象的属性

javascript - NodeJs : Multiple loop of HTTP requests execute simultaneously