Spring-mvc-controller und exception-handling
Möchte Sie bitten, eine best-practice-Frage, wo eine spring-mvc-controller betroffen ist. Bitte überprüfen Sie den code unten:
@Autowired
SomeService service;
@RequestMapping (...)
public @ResponseBody Response createSomething () {
try {
serviceResponse = service.doSomething();
//create a success response and return
}
catch (SomeServiceException e) {
//create an error response and return
}
}
Ist die Fehlerbehandlung durchgeführt werden auf der controller-Ebene normalen Praxis? Oder sollte der service-Klasse, nicht das werfen von Ausnahmen wie oben gezeigt. Bitte überprüfen Sie und lassen Sie mich wissen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde sagen, Sie haben drei Strategien, die vom Anwendungsfall abhängig.
Gibt es grob drei Strategien: HandlerExceptionResolver, @ExceptionHandler und die Handhabung von Ausnahmen innerhalb der Aktion.
Die use cases für diese sind: Allgemeine exception-handler für die gesamte Anwendung, ganze controller-spezifische Maßnahmen entsprechend.
HandlerExceptionResolver
Implementierungen befassen sich mit unerwarteten exceptions, die auftreten, während der controller-Ausführung D. H. während der Controller-AusführungIch würde sagen best practice wäre es, @ExceptionHandler. Als Nachteil der Behandlung der Ausnahme in der controller Methode ist, dass es macht den code weniger lesbar und könnte wiederholt werden, das über viele controller-Methoden.
Ich würde empfehlen, mit einer Basis-Klasse für Ihre Controller mit @ExceptionHandler definiert. Auf diese Weise kann es verwendet werden, für viele verschiedene Controller, ohne code-Duplizierung. Das wäre besser lesbar als die Ausnahme resolver Ansatz, aber könnte verwendet werden, in Verbindung.
Service-Klasse kann/sollte Ausnahme auslösen.. Man kann mit diesen Ausnahme-controller für logging-Zwecke..auch können Sie zeigen, dass entsprechende Fehler-Seiten auf der basis von exception caught on controller..aber das wird mühsam sein.. besser versuchen, Frühjahr Ausnahmebehandlung..http://www.mkyong.com/spring-mvc/spring-mvc-exception-handling-Beispiel/
Definieren bean im bean-definition-Datei-Handler-Klasse.
wenn eine Ausnahme ausgelöst wird, in einem Programm ,resolveException-Methode aufgerufen wird.
Eine gute Praxis mit exception-handling, werfen, früh und fangen spät. In deinem Fall würde das bedeuten, fangen die Fehler an den controller statt der Leistung. Der Vorteil hier ist, dass man code von verschiedenen Steuerungen auf der Basis der client-Anfrage (SOAP/REST/JSON...), zum behandeln von Ausnahmen anders. Aber wenn diese Logik wird in den Dienst, Sie haben weniger Flexibilität über, wie mit der Rückkehr aus dem Dienst, in Ihrer Reaktion auf die verschiedenen clients.