gpt4 book ai didi

angularjs - Angular 在提升 promise.catch 之前将错误记录到控制台

转载 作者:行者123 更新时间:2023-12-04 14:43:50 24 4
gpt4 key购买 nike

我觉得我有点疯了,但即使我有一个 catch,Angular 似乎也会为一个 promise 抛出一个错误。定义。它将错误抛出到控制台,然后允许 catch运行。

这是 super-simple fiddle

测试代码:

$q.when(1)
.then(function() {
throw new Error("test");
}).catch(function(error) {
console.log('error caught', error);
});

结果控制台

enter image description here
(肮脏的骗子!)

这里是 a fiddle showing what I expect to happen : catch引发,并且没有其他错误记录到控制台。是我没有配置某些东西,还是 Angular 实现了一个违背 promise 的规范?

最佳答案

angular 默认将所有错误记录到控制台。

angular 还提供了一种覆盖此行为的方法。 $exceptionHandler是一个全局服务,有机会处理任何异常($http、$digest 期间的错误等)。

如果添加这段代码:

myApp.factory('$exceptionHandler', function() {
return function(exception, cause) {
exception.message += ' (caused by "' + cause + '")';
//throw exception;
};
});

然后所有错误都会停止进一步的记录。虽然会处理 catch() 处理程序。更新 fiddle : http://jsfiddle.net/5jjx5rn3/

更新:

正如 dnc253 所指出的那样在评论中,如果您打算实际覆盖 angularjs 服务,则有更好的方法。即使不是这个问题的重点,最好知道简单地声明一个具有相同名称的服务,在任何模块中,服务都会被完全替换(后进胜出)。如果想在原始服务周围添加功能, decorator是正确的选择。

关于angularjs - Angular 在提升 promise.catch 之前将错误记录到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28682711/

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