3

为了我的目的,我正在使用带有 EnhancedPatternLayout 的 log4j 1.2.16 和根记录器。

代码是这样的(在 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 的堆栈跟踪在哪里?
为什么会发生这种情况,有没有办法解决这个问题?

4

0 回答 0