簡體   English   中英

Angular $ http服務是否對Http錯誤響應調用$ exceptionHandler

[英]Does Angular $http Service Call into the $exceptionHandler on Http Error Responses

我的印象是,有角度的$ http服務內部的請求返回的http錯誤將通過$ exceptionHandler傳遞,但是我看到某些行為使我不以為然。

任何人都可以確認$ http服務是否應在500 http狀態響應代碼的情況下將消息傳遞給$ exceptionHandler?

據我所知,不,它們不會通過異常處理程序。 角度文檔指出:

角度表達式中任何未捕獲的異常都委托給此服務。 默認實現只是將$ log.error委托給瀏覽器控制台。

500錯誤不會被視為未捕獲的異常。 我們使用$ httpProvider攔截響應並自己處理500個代碼。 我們提供了一項服務來處理此功能。

我們的應用程序配置如下所示:

appModule.config(['$routeProvider', '$locationProvider', '$httpProvider', '$provide',
function ($routeProvider, $locationProvider, $httpProvider, $provide) {
    // Http interceptor to handle session timeouts and basic errors
    $httpProvider.responseInterceptors.push(['httpHandlersSrv', function (httpHandlersSrv) {
        return function (promise) { return promise.then(httpHandlersSrv.success, httpHandlersSrv.error); };
    }]);
    routeProvider = $routeProvider;
    $locationProvider.html5Mode(true);
}
]);

這就是我們的$ httpHandlersSrv看起來像處理500個代碼錯誤的地方:

angular.module('appModule').factory('httpHandlersSrv', ['$q', '$location', '$rootScope', 'toaster', '$window', function ($q, $location, $rootScope, toaster, $window) {
return {
    success: function (response) {
        return response;
    },
    error: function (response) {
        switch (response.status) {
            case 0:
                //Do something when we don't get a response back
                break;
            case 401:
                //Do something when we get an authorization error
                break;
            case 400:
               //Do something for other errors
                break;
            case 500:
               //Do something when we get a server error
                break;
            default:
                //Do something with other error codes
                break;
        }
        return $q.reject(response);
    }
};
}]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM