Ich habe endlose Mengen von Tutorials zum Abfangen von nicht behandelten Ausnahmen in Spring MVC oder Spring REST finden können, aber was ich wissen möchte ist, wie Fangen Sie unbehandelte Ausnahmen ohne das Spring Web Framework überhaupt zu verwenden.So fangen Sie Nicht-MVC- und Nicht-REST-Ausnahmen in Spring Boot
Ich schreibe eine Anwendung, die keine Webkomponente hat, und ich werde Spring Web nur für die Ausnahmebehandlung nicht importieren.
Wenn eine @Service
eine Ausnahme auslöst, die nicht behandelt wird, muss ich es abfangen, damit ich es richtig auf Raygun protokollieren kann.
Betrachten wir zum Beispiel diese Methode in einem Dienst, der absichtlich eine abgefangene Ausnahme wirft:
@Scheduled(fixedDelay = 100)
public void doSomething() {
throw new RuntimeException("Uh oh!");
}
Sein Ausgang wird:
2017-08-16 00:19:40.202 ERROR 91168 --- [pool-1-thread-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task.
java.lang.RuntimeException: Uh oh!
at com.mitchtalmadge.example.ExampleService.doSomething(ClassSyncService.java:48) ~[classes/:na]
at com.mitchtalmadge.example.ExampleService$$FastClassBySpringCGLIB$$1dd464d8.invoke(<generated>) ~[classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669)
...
Wie kann ich, dass zu fangen?
Gibt es keinen einfachen Weg, dies zu tun?
Warum nicht ** try-catch ** verwenden? –
Können Sie genauer erklären, was Sie mit "Ein @ Service löst eine Ausnahme, die nicht behandelt wird" meinen? Wer ruft den Code, der die Ausnahme auslöst? – Oleg
@MehrajMalik Try-catch wo? Um jede Methode in jedem Service? Der Punkt eines nicht abgefangenen Ausnahmebehandlers ist, dass er die Ausnahmen abfängt, die Sie nicht mit einem try-catch erwartet haben. –