In meinem AngularJS App, definierte ich einen Standard-Handler für HTTP-Fehler auf diese Weise:Angular: Standard-Handler für nicht behandelte http Fehler
myapp.config([ '$httpProvider', function($httpProvider) {
$httpProvider.responseInterceptors.push('errorInterceptor')
}])
wo errorInterceptor
ist ein Dienst, der einige Details über den Fehler in einem Alarmfeld zeigt oben auf der aktuellen Seite.
Nun, wenn ich möchte einen bestimmten Fehler in einer anderen Art und Weise behandeln (zum Beispiel der Abfrage in einem modalen ausgelöst wird, und ich möchte nur die Warnung angezeigt wird in dieser modal und nicht auf Seitenebene):
$http.get('/my/request').then(success, specificErrorHandling)
Angular tut die specificErrorHandling
aber löst immer noch meine errorInterceptor
, so wird mein Fehler zweimal gemeldet. Gibt es eine Möglichkeit, das zu vermeiden?
Allgemeiner gibt es eine eckige Möglichkeit, nur Fehler zu behandeln, die nicht bereits entlang der promise
-Kette behandelt werden, genauso wie der Fehlerhandler der obersten Ebene einer Serveranwendung keine eingefangenen Ausnahmen verarbeiten muss ?
Edit: Wie von Rote-Bete-Rote-Bete in Kommentaren aufgefordert, hier ist der Code für mein Interceptor:
@app.factory 'errorInterceptor', [ '$q', 'alertsHandler',
($q, alertsHandler) ->
success = (response) ->
response
failure = (response) ->
alertsHandler.raise(response)
(promise) ->
promise.then success, failure
]
Können Sie bitte eine (vereinfachte Version von) errorInterceptor posten. –
Ich denke, die Warnungen von Interceptor ist eine nicht so gute Idee, und ich denke, es gibt keine Möglichkeit, das zu erreichen (kann ich falsch liegen) –
Was speziell mit dem Fehler getan wird, ist nicht der wichtige Teil. Es geht wirklich darum, eine Standardfehlerbehandlung zu haben, sodass Sie für 100% der asynchronen Aufrufe keine spezifische Fehlerbehandlungsroutine implementieren müssen und diese bei der Implementierung einer bestimmten Behandlung entschärfen können.Ähnlich wie Ausnahmen. Gibt es eine bessere Möglichkeit, einen Standardfehlerhandler als einen Interceptor zu implementieren? –