Java 线程静默崩溃 - 我无法捕获异常



我看到一个我无法解释的行为

我有一个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.NoSuchMethodErrorError

最新更新