@ExceptionHandler behandelt die ausgelösten Ausnahmen nicht

8

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.

    
Javi 20.05.2010, 08:32
quelle

2 Antworten

7

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.

    
skaffman 20.05.2010, 09:48
quelle
0

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.

    
Joram 04.09.2014 06:43
quelle