ResponseEntityExceptionHandler wird nicht aufgerufen, wenn eine Ausnahme auftritt

8

Ich bin neu im Frühling. Ich entwickle eine REST API mit Feder webmvc. Für die Fehlerbehandlung habe ich diesen Link Ссылка

Ich habe versucht, ResponseEntityExceptionHandler in meinem Projekt zu verwenden. aber immer, wenn mein Controller eine Ausnahme auslöst, erreicht er niemals diesen ResponseEntityExceptionHandler.

Im Folgenden finden Sie meinen Codeausschnitt

Controller

%Vor%

Ausnahmen

%Vor%

Ausnahmehandler

%Vor%

Dispatcher-Servlet

%Vor%

web.xml

%Vor%     
Harshal 21.06.2014, 05:55
quelle

3 Antworten

3

Sie müssen ResponseEntityExceptionHandler nicht erweitern, wenn Sie nicht alle von ihm bereitgestellten Ausnahmebedingungen benötigen.

Eine einfachere Möglichkeit, Ihre Ausnahmebehandlung zu schreiben:

%Vor%

Beachten Sie, dass die Builder-API ResponseEntity in Spring 4.1 eingeführt wurde, Sie aber den regulären Konstruktor unter 4.0.x verwenden können.

    
Brian Clozel 30.06.2015 21:13
quelle
1

Ich habe das gleiche Problem in Spring WebMVC 4.2.5. Der Grund war throwExceptionIfNoHandlerFound Parameter von DispatcherServlet . Standardmäßig ist der Wert false , so dass alle Fehler HttpServletResponse.SC_NOT_FOUND servlet response generieren und keine Ausnahmen auslösen.

Nachdem ich es auf "true" gesetzt habe, hat mein @ExceptionHandlers angefangen zu arbeiten

    
D0dger 18.04.2016 08:43
quelle
0

Es gibt einige gemeldete Situationen, in denen sowohl ResponseEntityExceptionHandler als auch @ControllerAdvice nicht funktionierten.

Beide sollen die Methoden kompilieren, die mit @ExceptionHandler unter der Klasse an einer gemeinsamen Stelle deklariert sind, auf die alle Controller zugreifen können.

Wenn es nicht für Sie funktioniert. Sie können Ihre @ExceptionHandler -Methoden in eine gemeinsame AbstractController -Klasse hinzufügen, die von allen anderen Controllern erweitert wird.

    
Supun Wijerathne 08.02.2018 05:50
quelle