【问题标题】:how to easily handle all errors in asynchronous functions of javascript?如何轻松处理javascript异步函数中的所有错误?
【发布时间】:2011-10-01 00:04:24
【问题描述】:

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

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

【问题讨论】:

    标签: javascript asynchronous error-handling try-catch onerror


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢。我将尝试在 try/catch 中包围每个异步函数,尽管我非常担心忘记包围其中的一些。
    • 我也担心这一点,但我认为 JS 异常和异步不能很好地结合在一起。我也在做一个中型的 JS 项目,因为这个问题我很担心做异常处理。所以我很高兴你提出来了。
    猜你喜欢
    • 1970-01-01
    • 2014-05-02
    • 2021-09-18
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    相关资源
    最近更新 更多