gpt4 book ai didi

angularjs - 如何删除angular js中找不到文件的错误

转载 作者:行者123 更新时间:2023-12-02 03:23:46 25 4
gpt4 key购买 nike

我正在尝试处理 Angular js 中的异常。我能够在一种情况下处理,但在这种情况下它无法处理为什么?

实际上,当任何东西未定义时,它都会捕获我的 $exceptionHandler。但是当找不到文件时,它不会被 $exceptionHandler 捕获为什么

例子笨蛋 http://plnkr.co/edit/mm4Uix8XXVrkhexW15vR?p=preview

案例一

当我点击这个

$http.get("default.json").then(successcallback, errorcallback);

成功 alert(data.hhh.getname());它是未定义的,由 $exceptionHandler 捕获并存储在数组中。这是输出 enter image description here

案例 2但是当我将文件 default.son 的名称更改为 defaul.json 时,$exceptionHandler 没有捕获它,为什么?它在控制台上显示 404 错误。我们可以捕获此错误并在控制台上打印吗?我们能捕捉到这个错误吗?

其实我不想得到这个错误enter image description here

如何处理这个错误?

最佳答案

请参阅 $exceptionHandler 的文档.注意部分:

Note, that code executed in event-listeners (even those registered using jqLite's on/bind methods) does not delegate exceptions to the $exceptionHandler (unless executed during a digest).

这意味着 $exceptionHandler 捕获 digest cycle 抛出的未捕获异常.然而,如果你真的点击抛出 404 的那一行,你应该注意到它是由 XHR 抛出的,在 Angular 的 $apply 之外。 ,因此 $exceptionHandler 不在捕获它的范围之外。另一方面,您的 data.hhh.getname()$q 中成功回调,包含在 $apply 中, 所以它被 $exeptionHandler 捕获了。

编辑实际上 article I linked for digest cycle更好地解释了这一点。

Keep in mind that you should always use the version of $apply() that accepts a function argument. This is because when you pass a function to $apply(), the function call is wrapped inside a try...catch block, and any exceptions that occur will be passed to the $exceptionHandler service.

它不仅仅是一个摘要循环,它需要在$apply里面的范围。否则 Angular 将没有机会在任何地方放置 try ... catch block 来捕获异常并将其传递给 $exceptionHandler

编辑 仔细检查后,您在控制台中看到的 404 甚至不是一个异常(exception)。它由 XHR 记录到 console.error ,这是一个 native API。因此,您在控制台中看到的内容必须保留并且无法被捕获。但是请注意,您始终可以在其失败回调中检查 $http 失败,因此您可以注入(inject) $exceptionHandler (我看到您已经自行配置)并手动登录它。例如。

responseError: function(error){
$exceptionHandler(new Error(
error.config.method + ' ' +
error.config.url + ' ' +
error.status +' ' +
'(' + error.statusText + ')'
));
return $q.reject(error);
}

参见 Plunker

关于angularjs - 如何删除angular js中找不到文件的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31509183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com