Thread.setDefaultUncaughtExceptionHandler весной
Я разрабатываю приложение Spring, и мне было интересно, есть ли часть инфраструктуры, которая позволяет мне делать что-то подобное более элегантным способом, например, настраивать что-то в XML?
2 ответа
Решение
Если цель вашего вопроса состоит в том, чтобы установить UncaughtExceptionHandler
через контекст приложения вы можете использовать:
<bean id="myhandler" class="java.lang.ThreadGroup">
<constructor-arg value="Test"/>
</bean>
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="java.lang.Thread"/>
<property name="targetMethod" value="setDefaultUncaughtExceptionHandler"/>
<property name="arguments">
<list>
<ref bean="myhandler" />
</list>
</property>
</bean>
(NB заменить myhandler на Thread.UncaughtExceptionHandler
выбора...)
Вы также можете использовать @ControllerAdvice
аннотированные классы для обработки необработанных исключений. Ссылаясь на https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc, следующий код перехватит любое исключение:
@ControllerAdvice
public class MyUncaughtExceptionHandler {
@ExceptionHandler(value = Exception.class)
public void defaultExceptionHandler(Exception e) {
// do whatever you want with the exception
}
}