Java线程无声地崩溃 - 我无法捕获异常

Vit*_*mud 2 java multithreading exception executorservice executors

我看到一种行为,我无法解释

我有一个Runnable,它的代码是:

run()
{
    print("start");
    try{
        doSomething();
        print("end");    

    }catch (Exception e){
        print("problem");
    }
    print("method end");

}
Run Code Online (Sandbox Code Playgroud)

这种行为很奇怪,因为我得到的唯一打印是"开始" - 我希望得到"问题"和"方法结束"打印.如果doSomething本身处理异常 - 那么将打印"end".但除了"开始",我没有得到任何印刷品

现在我知道doSomething方法存在一些问题,好像我不是通过执行程序服务运行它,我得到"Method Not Found"异常.

我认为它可能以某种方式连接到我使用的Executor服务 - Executors.newFixedThreadPool,但我无法解释它

谢谢你的建议!

hmj*_*mjd 9

NoSuchMethodError不是源于Exception:

java.lang.Object
    java.lang.Throwable
        java.lang.Error
            java.lang.LinkageError
                java.lang.IncompatibleClassChangeError
                    java.lang.NoSuchMethodError
Run Code Online (Sandbox Code Playgroud)

所以不会被发布的catch条款抓住.更改以捕获Throwable或添加单独的catch子句Error并以不同的方式处理(尝试从a恢复Exception但是报告Error并且不尝试恢复,例如).