我看到一个我无法解释的行为
我有一个Runnable,它的代码是:
run()
{
print("start");
try{
doSomething();
print("end");
}catch (Exception e){
print("problem");
}
print("method end");
}
的行为是奇怪的,因为我得到的只有打印是"开始"-我希望得到"问题"one_answers"方法结束"打印也。如果doSomething自己处理异常——那么"end"就会被打印出来。但是除了"start"
我没有得到任何打印现在我知道有一些问题与doSomething方法,如果我运行它不通过执行器服务,我得到"方法未找到"异常。
我认为它可能以某种方式连接到我使用的Executor服务- Executors。newFixedThreadPool,但我不能解释它
谢谢你的建议!
NoSuchMethodError
不是源自Exception
:
java.lang.Object
java.lang.Throwable
java.lang.Error
java.lang.LinkageError
java.lang.IncompatibleClassChangeError
java.lang.NoSuchMethodError
因此不会被张贴的catch
条款捕获。更改捕获Throwable
或为Error
添加单独的catch
子句并以不同的方式处理(例如,尝试从Exception
恢复但报告Error
并且不尝试恢复)。
当然会抛出一个Error
。试试抓Throwable
吧。
编辑:的确,java.lang.NoSuchMethodError
是Error
。