Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何轻松处理javascript异步函数中的所有错误?_Javascript_Asynchronous_Error Handling_Try Catch_Onerror - Fatal编程技术网

如何轻松处理javascript异步函数中的所有错误?

如何轻松处理javascript异步函数中的所有错误?,javascript,asynchronous,error-handling,try-catch,onerror,Javascript,Asynchronous,Error Handling,Try Catch,Onerror,try/catch无法处理异步函数中的错误。 当然,如果我在每个异步函数中编写try/catch,这是可以处理的,但这是不现实的。 window.onerror可以处理异步函数中的错误。 但是window.onerror会捕获窗口中的所有错误。 我只想在窗口中处理javascript应用程序(例如,游戏)的异步(以及同步)函数中的所有错误。 如果只在javascript应用程序中发生错误,我希望显示错误消息并停止应用程序。 我不想对应用程序外的错误执行任何操作。听起来似乎无法区分脚本错误和其他

try/catch
无法处理异步函数中的错误。
当然,如果我在每个异步函数中编写
try/catch
,这是可以处理的,但这是不现实的。

window.onerror
可以处理异步函数中的错误。
但是
window.onerror会捕获窗口中的所有错误。
我只想在窗口中处理javascript应用程序(例如,游戏)的异步(以及同步)函数中的所有错误。
如果只在javascript应用程序中发生错误,我希望显示错误消息并停止应用程序。

我不想对应用程序外的错误执行任何操作。

听起来似乎无法区分脚本错误和其他错误。如果您只想捕获自己的异常类型,那么您可以定义一个自定义异常构造函数并从中派生所有自己的异常。然后让
window.onerror
检查对象是否来自自定义构造函数(如果是,则返回true,以抑制错误,否则返回false)


我认为实现这一点最可靠的方法是在try/catch中围绕每个异步函数(即使您说您不想这样做)。你可以把它变成一个成语;在try/catch中围绕每个异步函数,并让catch块调用一个适当处理错误的函数。或者更好的做法是,创建一个习惯用法,其中异步函数接受额外的“失败”回调,如果发生错误,它将调用该回调。这样,异步函数的调用方可以指定异步错误处理程序。(首先,GWT框架使用这种方法。)

非常感谢。我将尝试在try/catch中围绕每个异步函数,尽管我非常担心忘记围绕其中一些函数。我也担心这一点,但我认为JS异常和异步不能很好地结合在一起。我也在从事一个中等规模的JS项目,我担心会因为这个问题而进行异常处理。所以我很高兴你提出了它。