我已经能够找到无数关于如何在 Spring MVC 或 Spring REST 中捕获未处理异常的教程,但我想知道的是如何在完全不使用 Spring Web 框架的情况下捕获未处理异常。
我正在编写一个没有 Web 组件的应用程序,并且我不会只为异常处理而导入 Spring Web。
当 a@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)
...
我怎么抓住它?
有没有简单的方法可以做到这一点?