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% 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.
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
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.
Tags und Links spring-mvc error-handling spring-security spring-3