我正在使用log4j 1.2.16和带有EnhancedPatternLayout的root logger来实现我的目的。
代码就像那样(在ScheduledFuture中捕获异常):
try
{
_task.run();
}
catch(RejectedExecutionException ree) {}
catch (Exception e)
{
log.error("Exception in a scheduled task:", e);
}
接下来会发生这种情况,某些异常不会在日志文件中留下任何堆栈跟踪。
这是NPE的正常日志:
[24.11.12 11:08:31] Exception in a scheduled task:
java.lang.NullPointerException
at com.test.server.taskmanager.TestTask$1.run(TestTask.java:116)
at com.test.server.threading.RunnableWrapper.execute(RunnableWrapper.java:65)
at com.test.server.threading.RunnableWrapper.run(RunnableWrapper.java:57)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
.....
接下来是ClassCastException:
[24.11.12 11:16:37] ...
[24.11.12 11:18:30] Exception in a scheduled task:
java.lang.ClassCastException
[24.11.12 11:18:37] ...
[24.11.12 11:20:37] ...
[24.11.12 11:21:51] Exception in a scheduled task:
java.lang.ClassCastException
[24.11.12 11:22:37] ...
我不明白.. ClassCastException的堆栈跟踪在哪里?
为什么会发生这种情况,有没有办法解决这个问题?