javamultithreadingexceptionexecutorserviceexecutors

Java thread crashes silently - I can't catch the exception


I see a behavior from I can't explain

I have a Runnable that it's code is something of:

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

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

}

The behavior is strange because the only print I get is "start" - I would expect to get the "problem" and the "method end" prints also. And if the doSomething handles the exception itself - so the "end" would be printed. But I don't get any of the prints except "start"

Now i know that there is some issue with the doSomething method as if I run it not through the executor service, I get "Method Not Found" exception.

I think it might be somehow connected to the Executor service that I use - Executors.newFixedThreadPool, but I can't explain it

Thanks for your advice!


Solution

  • NoSuchMethodError is not derived from Exception:

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

    so will not be caught by the posted catch clause. Change to catch Throwable or add a separate catch clause for Error and handle differently (attempt to recover from an Exception but report an Error and do not attempt to recover for example).