Ich habe eine Methode in meinem Controller, die die Ausnahmen behandelt, die von der Anwendung ausgelöst werden. So habe ich eine Methode wie diese.
%Vor%Und um es auszuprobieren, wenn es funktioniert, werfe ich eine NullPointerException in eine andere Methode in einem anderen Methodencontroller:
%Vor%Nachdem die Ausnahme ausgelöst wurde, wird sie in der JSP ausgedruckt, aber sie wird nicht meine showError () -Methode werfen (Ich habe dort einen Haltepunkt gesetzt und er tritt nie ein). Die showError () -Methode fängt die Ausnahme ab und zeigt je nach Ausnahmetyp verschiedene Fehlerseiten (obwohl sie jetzt immer die gleiche Fehlerseite anzeigt). Wenn ich auf die URL / Fehler gehe, zeigt es die Fehlerseite, so dass die Methode showError () OK ist.
Ich benutze Frühling 3.
Was kann das Problem sein?
Danke.
Wenn Sie sich Ihre Protokolle ansehen, werden Sie wahrscheinlich Folgendes sehen:
java.lang.IllegalStateException
: Nicht unterstütztes Argument [org.springframework.ui.Model
] für@ExceptionHandler
Methode
Mit anderen Worten, @ExceptionHandler
Methoden dürfen keinen Model
Parameter deklarieren (siehe Dokumente ).
Entfernen Sie diesen Parameter (den Sie sowieso nicht verwenden), und es sollte wie erwartet funktionieren.
Wenn Sie Ausnahmen global (außerhalb Ihres Controllers) behandeln möchten, können Sie eine annotierte Klasse @ControllerAdvice verwenden, in die Sie Ihre annotierten Methoden @ExceptionHandler einfügen.
siehe Ссылка für ein Beispiel. Und Ссылка für die Verbesserungen, die im Frühling 4 gemacht werden.
Tags und Links java exception-handling spring jsp spring-mvc