是否可以确定仅在finally
捕获时发生了哪个例外?
以下是标准ThreadPoolExecutor代码的摘录:
public void run() {
try {
Runnable task = firstTask;
firstTask = null;
while (task != null || (task = getTask()) != null) {
runTask(task);
task = null;
}
} finally {
workerDone(this);
}
}
即。这里没有catch
。我的调试器在workerDone()
调用停止,表明发生了RuntimeException,但由于这里没有异常变量,我认为无法知道错误消息或其他什么。
答案 0 :(得分:3)
您应该能够在调试器中为未捕获的异常添加“异常断点”。通常,这是Debug透视图中“变量”选项卡旁边的选项卡。
答案 1 :(得分:1)
不仅适用于日食。 你可以使用Thread.setUncaughtExceptionHandler(...) 如果你可以重新编译,那么在'run'方法中进行。 如果没有,ASAIK,即使你在主线程中这样做,你也会在“内部”线程中捕获异常。