每当抛出 javascript 异常时,我们还想做一些额外的事情。
来自 $exceptionHandler
的文档:
Any uncaught exception in angular expressions is delegated to this service. The default implementation simply delegates to $log.error which logs it into the browser console.
事实上,它说“默认实现”让我认为我们可以为服务提供我们自己的实现,并在抛出异常时做我们想做的事情。我的问题是,你是怎么做到的?我们如何才能让所有异常都进入该服务,然后提供我们想要发生的功能?
最佳答案
我为此找到的另一个选择是通过 $provide.decorator 来“装饰”$exceptionHandler
功能。如果您想将其用作自定义实现的一部分,这将为您提供对原始实现的引用。所以,你可以这样做:
mod.config(function($provide) {
$provide.decorator("$exceptionHandler", ['$delegate', function($delegate) {
return function(exception, cause) {
$delegate(exception, cause);
alert(exception.message);
};
}]);
});
它将执行原始异常处理程序所做的工作,外加自定义功能。
查看此 updated fiddle .
关于javascript - 如何覆盖 $exceptionHandler 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13595469/