Angular中的通用错误处理

时间:2016-01-27 05:24:48

标签: angularjs angularjs-directive angularjs-scope angularjs-ng-repeat

我在我的应用程序中使用拦截器在服务停止时进行一般错误处理 即使我已经更改了基本网址来测试我的服务,我也会获得状态200的成功响应。我做错了什么?

      var myServices = angular.module('myServices', ['ngResource']);

       myServices.config(function ($provide, $httpProvider) {
       $provide.factory('ErrorInterceptor', function ($q) {
       return {
        response: function(){
        return response;// always success??
       }
        responseError: function(rejection) {
        $scope.addErrorAlert("Services are currently not responding.  Please try again later.",true);
            return;
        }
    };
});

2 个答案:

答案 0 :(得分:1)

while(input.hasNext()) { if(input.hasNextInt()) { x = input.nextInt(); if(x < 0) { // return or // throw exception or whatever your requirements is. } // your business logic } } 中添加拦截器的最佳方法是为此创建一个单独的工厂并将其推送到$httpProvider

$httpProvider.interceptors

答案 1 :(得分:1)

您可以使用拦截器编写全局异常处理程序。您只需要覆盖responseError拦截器。在这里我打电话给#34; openErrorModel&#34;在$ rootScope上定义的方法,以便在出现错误时打开错误消息并显示错误消息。 这将更清洁和模块化。并且你可以通过这种方式避免重复。

示例代码:

(function (global) {
    "use strict";

    angular.module("TestAPp").factory('httpInterceptor', ["$rootScope", "$q", function ($rootScope, $q) {
        return {
        responseError: function (response) {
            /* Open Error model and display error */
            $rootScope.openErrorModel(response);
            /* reject deffered object so that it'll reach error block , else it'll execute success function */
            return $q.reject(response);
        }
        };
    }]);

}(this));

//注册拦截器

(function (global) {
    "use strict";

    angular.module("TestApp", [])
           .config([ '$httpProvider',function ($httpProvider) {
                /* Register the interceptor */
                $httpProvider.interceptors.push('httpInterceptor');

    }]);

}(this));

PS:我的openErrorModel定义

$rootScope.openErrorModel = function (error) {
      $rootScope.errorMessage = error.data;
      $('#errorModal').modal('show');
};

您可以参考Error Handling in angular了解更多信息。