【问题标题】:How to avoid exceptions to freeze entire app in Svelte?如何避免在 Svelte 中冻结整个应用程序的异常?
【发布时间】:2020-03-06 19:59:33
【问题描述】:

我想知道是否有办法避免异常冻结整个 Svelte 应用程序?

我目前正在使用 Svelte v3.12.0,看起来如果有未捕获的异常,整个前端应用程序就会冻结并且无法从错误中恢复。我不认为在 try...catch... 中包装每个组件中的每一行代码是一个很好的解决方案。

【问题讨论】:

    标签: svelte


    【解决方案1】:

    没有办法这样做,一般来说,异常会停止所有进一步的脚本执行。

    但请记住,异常应该是异常的,并且表明出现了意外错误。如果您希望发生某些错误,它们不再是异常,应该进行处理(如果您对抛出异常的部分几乎没有控制权,有时这确实需要 try-catch)。将所有内容都包装在 try-catch 块中,这表明您的代码库中有一些非常脆弱的东西。

    如果您遇到的异常主要是由 api 返回引起的,请考虑在您的 fetch promise 上加上 .catch() 并优雅地处理失败的 api。

    【讨论】:

    • 由于是异常,所以需要登录系统,抓不到就无法登录。
    • 但问题是,您不能在 try/catch 中包装模板。
    • 理想情况下,应用程序应该是健壮的,异常应该有范围,并且某些组件中的异常不应该使整个应用程序崩溃。
    • 同意,这是当前反应系统的限制:Svelte RFC 40
    猜你喜欢
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    相关资源
    最近更新 更多