Spring中的Thread.setDefaultUncaughtExceptionHandler

时间:2012-02-10 14:05:32

标签: java spring uncaughtexceptionhandler

我正在开发一个Spring应用程序,并且想知道是否有一部分框架允许我以更优雅的方式执行此类操作,例如使用XML配置某些内容?

2 个答案:

答案 0 :(得分:6)

如果您的问题的目的是通过您的应用程序上下文设置自定义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。用Thread.UncaughtExceptionHandler选择替换myhandler ......)

答案 1 :(得分:1)

您还可以使用@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
    } 
}