javascript - 如何覆盖 $exceptionHandler 实现

标签 javascript exception-handling angularjs

每当抛出 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/

相关文章:

javascript - Angular 触发 Div 根据条件点击

php - 向 php 页面发送请求,然后使用 ajax 返回结果

javascript - jQuery轮播制作响应

exception-handling - 在 Java 的新窗口中创建异常消息,而不是在控制台上

c# - SQL 唯一键插入

AngularJS - Angular UI-Router 仅重新加载嵌套 View ,而不是父 View

javascript - 在加载所有部分(ng-includes)后运行一个函数

c# - 从cs页面禁用输入类型单选按钮单击并使用js向用户发送警报?

ios - 一种忽略方法抛出的任何错误的优雅方法

javascript - 使用 downgradeComponent 时引导的 Angular 2 + Angular 1 混合应用程序未加载