我已經能夠找到無數的關於如何在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的異常。 –