Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.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(Angular2)错误会阻止页面完成渲染_Javascript_Angular_Error Handling - Fatal编程技术网

哪些类型的Javascript(Angular2)错误会阻止页面完成渲染

哪些类型的Javascript(Angular2)错误会阻止页面完成渲染,javascript,angular,error-handling,Javascript,Angular,Error Handling,我是Angular2的新手,负责开发“健壮的错误处理”。到目前为止,我已经按照简单的示例(console.logging)添加了自定义错误处理。但有时,如果页面由于错误而完全停止加载,我们会希望重定向用户 但是,有时,如下所示,尽管存在错误,但页面会完全加载。是否只有某些类型的错误会阻止页面完全加载 任何错误都可能导致页面无法呈现,具体取决于该错误在流程中发生的位置。如果在回调或其他异步操作中出现任何错误,都可能无法捕获 小心使用诸如“健壮的错误处理”之类的术语——我见过一些大型商业项目声称这一

我是Angular2的新手,负责开发“健壮的错误处理”。到目前为止,我已经按照简单的示例(console.logging)添加了自定义错误处理。但有时,如果页面由于错误而完全停止加载,我们会希望重定向用户

但是,有时,如下所示,尽管存在错误,但页面会完全加载。是否只有某些类型的错误会阻止页面完全加载


任何错误都可能导致页面无法呈现,具体取决于该错误在流程中发生的位置。如果在回调或其他异步操作中出现任何错误,都可能无法捕获

小心使用诸如“健壮的错误处理”之类的术语——我见过一些大型商业项目声称这一点,但实际上只是默默地处理大量问题,有点像下一步错误恢复时的

我发现黄金法则是:

  • 如果您的应用程序可以通过异常(例如从非必要服务获取损坏的JSON数据)继续运行,则应始终显式处理该特定情况

  • 否则,意外异常总是会破坏某些可见的内容

  • 第二条规则是违反直觉的,但它确实是最佳实践。用户会抱怨他们看到的错误,可见的异常和崩溃会让他们不安,降低他们对应用程序的信心

    然而,他们看不到的异常仍然发生,因为你已经默默地用卡车通过它们,导致它们的任何东西仍然存在。静默异常会导致数据丢失或损坏。它们导致的bug只有在生产6个月后才能发现。它们会导致你被起诉的那种错误

    用户将原谅您快速修复的明显错误,如果您丢失数据并且不立即知道,他们将离开,再也不会回来

    好的,所有这些都说明了,您要突出显示的错误是异步的,并且与一个有时被描述为回调地狱的问题有关

    在您的屏幕截图中,错误来自HTTP GET请求-这通常是一种方法,在该方法中,您发出AJAX请求,在请求成功时有一个回调来触发,但没有回调来处理异常

    Angular2使用承诺,这是屏幕截图的下一个错误行。承诺包装这些回调并允许您链接它们-它们确实有助于回调地狱,但它们并不是一颗神奇的子弹:您必须确保每个
    .then()
    都有一个错误处理程序或一个后续
    .catch()

    然而,还有一种更好的方法:使用Angular2,您可以使用TypeScript,这意味着您可以使用
    async
    wait
    。这些是承诺的语法糖,但它们还与
    try
    -
    catch
    一起使用,以使异步异常的错误处理更加容易

    我有

    TL;DR:在Angular2中,使用
    async
    /
    wait
    (如果需要,使用TS transpilation)确保您的
    承诺和回调异常能够备份,然后处理您期望/可以解决的问题,并为您不能解决的问题明显崩溃