Allgemeiner Exception-Handler für Spring REST Controller

Hat man eine REST API mit den Spring REST Controllern aufgebaut, kann es sinnvoll sein, die Fehlerbehandlung an einer zentralen Stelle abzuhandeln. So kann man beispielsweise bei einer aufgetretenen Exception diese in einem definierten JSON-Format an die Clients zurückliefern

Spring stellt hierfür die Annotation @ExceptionHandler zur Verfügung. Diese kann in einer mit @ControllerAdvice annotierten Klasse verwendet werden und gilt somit Projekt-weit für alle Controller-Klassen, sofern der Exception-Handler in dieser nicht eigens definiert wird.

Generell kann oder sollte man für jede Exception eine eigene Methode bereitstellen um den Usern aussagekräftige Fehlermeldungen zu liefern. Bei internen Schnittstellen kann es jedoch auch sinnvoll sein, alle Exceptions über eine einzige Methode zu behandeln.

Mit der folgenden Klasse werden alle in Controllern auftretenden Exceptions abgefangen und dem Client als JSON-Response zurückgeliefert:

Die GeneralErrorResource-Klasse ist ein einfaches POJO welches an den Client entprechend die Exception-Meldung zurückliefert und beliebig individuell gestaltet werden kann: