Как обработать исключение java.util.concurrent.ExecutionException?

Некоторая часть моего кода вызывает исключение java.util.concurrent.ExecutionException. Как я могу справиться с этим? Могу ли я использовать предложение throws? Я немного новичок в Java.

3 ответа

Решение

Если вы хотите обработать исключение, все довольно просто.

   public void exceptionFix1() {
       try {
           //code that throws the exception
       } catch (ExecutionException e) {
           //what to do when it throws the exception
       }
   }

   public void exceptionFix2() throws ExecutionException {
       //code that throws the exception
   }

Имейте в виду, что второй пример должен быть заключен в try-catch заблокировать где-нибудь до вашей иерархии исполнения.

Если вы хотите исправить это исключение, мы должны увидеть больше вашего кода.

Это зависит от того, насколько важна ваша миссия Future был для того, как справиться с этим. Правда в том, что ты никогда не получишь его. Вы только когда-либо получите это исключение, если что-то было сгенерировано кодом, выполненным в вашем Future это не было обработано.

Когда ты catch(ExecutionException e) Вы должны быть в состоянии использовать e.getCause() чтобы определить, что произошло в вашем Future,

В идеале, ваше исключение не всплывает на поверхность, как это, а обрабатывается непосредственно в вашем Future,

Вы должны расследовать и устранить причину вашего исключения ExecutionException.

Одна из возможностей, описанная в книге "Java Concurrency in Action", заключается в создании launderThrowable метод, который заботится о распаковке ExecutionExceptions

void launderThrowable ( final Throwable ex )
{
    if ( ex instanceof ExecutionException )
    {
        Throwable cause = ex.getCause( );

        if ( cause instanceof RuntimeException )
        {
            // Do not handle RuntimeExceptions
            throw cause;
        }

        if ( cause instanceof MyException )
        {
            // Intelligent handling of MyException
        }

        ...
    }

    ...
}
Другие вопросы по тегам