如何处理angularjs中的异常

时间:2016-05-19 11:56:50

标签: angularjs exception-handling

我有一个角度应用程序。它有n个控制器。我知道$ exceptionHandler。这是自定义的expception处理程序。

'use strict';

angular.module('exceptionHandlingApp')
.config(function($provide) {
$provide.decorator('$exceptionHandler', ['$log', '$delegate',
  function($log, $delegate) {
    return function(exception, cause) {
      $log.debug('Default exception handler.');
      $delegate(exception, cause);
    };
  }
]);
});

控制器

 app.controller('cust1Controller',function($scope,$exceptionHandler)
 {
    //ajax request or anything
 }

 app.controller('cust2Controller',function($scope,$exceptionHandler)
 {
    //ajax request or anything
 }

如果任何控制器发生任何异常,我该如何调用自定义处理程序?

1 个答案:

答案 0 :(得分:0)

你不应该调用异常的处理程序。它由AngularJS自动调用。

要确保您可以使用debugger关键字。让我举个例子。

angular
    .module("app")
    .config(logExceptionToAPIServer);

function logExceptionToAPIServer($provide) {
    $provide.decorator("$exceptionHandler", ["$delegate",
        function ($delegate) {
            return function (exception, cause) {
                debugger;
                var http = angular.injector(['ng']).get('$http');
                debugger;
                var request = {
                    Message: exception.message,
                    StackTrace: exception.stack
                };
                http.post('yourAddress//', request);
                $delegate(exception, cause);
            };
        }
    ]);
};