2

説明できない

コードが次のようなものである Runnable があります。

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

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

}

私が得る唯一の印刷は「開始」であるため、動作は奇妙です.「問題」と「メソッド終了」も印刷されると予想されます。そして、doSomething が例外自体を処理する場合、「終了」が出力されます。しかし、「開始」以外のプリントは取得できません

エグゼキューターサービスを介さずに doSomething メソッドを実行すると、「メソッドが見つかりません」という例外が発生するため、doSomething メソッドに問題があることがわかりました。

私が使用している Executor サービス - Executors.newFixedThreadPool に何らかの形で接続されている可能性があると思いますが、説明できません

アドバイスありがとうございます!

4

2 に答える 2

9

NoSuchMethodErrorは から派生していませんException:

java.lang.Object
    java.lang.Throwable
        java.lang.Error
            java.lang.LinkageError
                java.lang.IncompatibleClassChangeError
                    java.lang.NoSuchMethodError

catchそのため、投稿された句に引っかかりません。別の句をキャッチThrowableまたは追加して、別の方法で処理するように変更します (たとえば、からの回復を試みますが、を報告し、回復を試みません)。catchErrorExceptionError

于 2014-05-07T09:13:16.820 に答える