当抛出未捕获的异常时,TimerTasks会死亡(无论它是否在tomcat中运行都无关)。解决此问题的最简单方法是在run方法中捕获RuntimeException,如果需要,请登录并继续。
还建议也捕获Throwables并在重新抛出之前对其进行记录,以便可以在日志中看到stacktrace,如下所示:
try{
doRun();
}catch (RuntimeException e){
logger.error("Uncaught Runtime Exception",e);
return; // Keep working
}catch (Throwable e){
logger.error("Unrecoverable error",e);
throw e;
}