Thread.setDefaultUncaughtExceptionHandler весной - PullRequest
5 голосов
/ 10 февраля 2012

Я занимаюсь разработкой приложения Spring, и мне было интересно, есть ли часть инфраструктуры, которая позволяет мне делать что-то подобное более элегантным способом, например, настраивать что-то в XML?

Ответы [ 2 ]

6 голосов
/ 10 февраля 2012

Если цель вашего вопроса - установить пользовательский 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>

(N.B. Заменить myhandler на Thread.UncaughtExceptionHandler на выбор ...)

1 голос
/ 20 декабря 2015

Вы также можете использовать @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
    } 
}
...