Java - spring console应用程序全局异常处理程序

时间:2012-12-03 15:50:22

标签: java spring exception handler global

Java - spring - quartz应用程序

我有弹簧3.x的Java应用程序,它使用quartz调度程序处理一些数据。 我正在查看以下文章,他们定义了全局Global Servlet container exception handler

我想配置spring来捕获我的应用程序中发生的任何异常。 上面提到的文章使用“org.springframework.web.servlet.handler.HandlerExceptionResolverComposite”,它是servlet的speicfic实现,这就是为什么我不能使用它。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您提到的类用于Spring MVC DispatcherServlet中的catch块,用于将特定的Exceptions与处理程序进行匹配。 AFAIK没有一个类可以与vanilla Spring一起开箱即用,但是没有理由你不能为你的应用创建一个类似的执行容器:

public interface ExceptionHandler {
  public void handle(Exception e);
}

public class ExecutionEnvironment {
  private Map<Class, ExceptionHandler> executionHandlers;

  public void run() {
    try {
      // Your app code...
    } catch (Exception e) {
      if(executionHandlers.get(e.getClass()) != null) {
         executionHandlers.get(e.getClass()).handle(e); 
      } else {
        throw new RuntimeException(e);
      }
    }
  }
}

然后使用上下文配置来设置异常处理程序。希望这会有所帮助。

答案 1 :(得分:0)

您没有提到捕获异常时要执行的操作。如果您只想记录异常,可以使用AOP。

一个可能更简单的解决方案是用捕获异常的类包装你的任务。