Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angularjs – 在提升promise.catch之前,Angular将错误记录到控制台大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我觉得我有点疯狂,但是即使我定义了一个捕获,Angular似乎也会为一个承诺抛出错误.它将错误抛出到控制台,然后允许catch运行. @H_772_5@ @H_772_5@这是一个super-simple fiddle

@H_772_5@测试代码

@H_772_5@
$q.when(1)
    .then(function() {
        throw new Error("test");
    }).catch(function(error) {
        console.log('error caught',error);
    });
@H_772_5@结果控制台

@H_772_5@(肮脏的骗子!)

@H_772_5@这是a fiddle showing what I expect to happen:引发了catch,并且没有其他错误记录到控制台.我是否未能配置某些内容,或者Angular是否实施了破坏的承诺规范?

解决方法

认情况下,将所有错误记录到控制台. @H_772_5@ @H_772_5@angular还提供了一种覆盖此行为的方法. $exceptionHandler是一个全局服务,有机会处理任何异常($http,$digest期间的错误等).

@H_772_5@如果你添加这段代码

@H_772_5@ @H_836_11@myApp.factory('$exceptionHandler',function() { return function(exception,causE) { exception.message += ' (caused by "' + cause + '")'; //throw exception; }; }); @H_772_5@然后所有错误都会停止进一步记录.但是会处理catch()处理程序.更新小提琴:http://jsfiddle.net/5jjx5rn3/

@H_772_5@更新:

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

大佬总结

以上是大佬教程为你收集整理的angularjs – 在提升promise.catch之前,Angular将错误记录到控制台全部内容,希望文章能够帮你解决angularjs – 在提升promise.catch之前,Angular将错误记录到控制台所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。