我已经能够找到无数的关于如何在Spring MVC或Spring REST中捕获未处理的异常的教程,但是我想知道的是如何在没有使用Spring Web框架的情况下捕获未处理的异常。如何在Spring Boot中捕获非MVC和非REST异常
我正在编写一个没有Web组件的应用程序,而且我不会仅为异常处理导入Spring Web。
当一个@Service
引发未处理的异常,我需要抓住它,以便我可以正确地登录到Raygun。
例如,考虑在故意抛出未捕获的异常服务这个方法:
@Scheduled(fixedDelay = 100)
public void doSomething() {
throw new RuntimeException("Uh oh!");
}
它的输出将是:
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)
...
如何明白了吗?
有没有简单的方法来做到这一点?
为什么不使用** try-catch **? –
您能否更详细地解释“a @Service抛出未处理的异常”的含义?谁调用引发异常的代码? – Oleg
@MehrajMalik Try-catch在哪里?围绕每项服务的每种方法?未捕获的异常处理程序的一个要点是,它捕获了您未尝试使用try-catch的异常。 –