在我angularjs應用程序默認的處理程序,我定義了HTTP錯誤的默認處理程序是這樣的:角:未處理的HTTP錯誤
myapp.config([ '$httpProvider', function($httpProvider) {
$httpProvider.responseInterceptors.push('errorInterceptor')
}])
其中errorInterceptor
是顯示警告場有關該錯誤的一些細節服務在當前頁面的頂部。
現在,當我要處理不同的方式特定錯誤(比如查詢被觸發的模式,我想只有在這種模式將顯示警報,而不是在網頁級別):
$http.get('/my/request').then(success, specificErrorHandling)
角度是specificErrorHandling
,但仍然觸發我的errorInterceptor
,所以我的錯誤報告了兩次。有沒有辦法避免這種情況?
更一般地說,是否有一種角度方式來處理沿着promise
鏈的錯誤,這與服務器應用程序的頂層錯誤處理程序不必處理捕獲的異常?
編輯:正如意見中的要求由甜菜,甜菜根,這裏是我的攔截器的代碼:假設你知道哪些錯誤需要被抑制,哪一個需要被傳播
@app.factory 'errorInterceptor', [ '$q', 'alertsHandler',
($q, alertsHandler) ->
success = (response) ->
response
failure = (response) ->
alertsHandler.raise(response)
(promise) ->
promise.then success, failure
]
請問您可以發佈(簡體版)errorInterceptor。 –
我認爲顯示攔截器的警報是一個不太好的主意,我認爲有沒有辦法做到這一點(可能是我錯了) –
具體做什麼錯誤不是重要的部分。這實際上是有一個默認的錯誤處理,所以你不必爲100%的異步調用實現一個特定的錯誤處理程序,並且當你實現特定的處理時能夠化解它。很像例外。有沒有比攔截器更好的實現默認錯誤處理程序的方法? –