Окружите метод Callable.call или метод Runnable.run с помощью try / catch ...
Например:
public void run()
{
try
{
// ... code
}
catch(final IOException ex)
{
// handle it
}
catch(final RuntimeException ex)
{
// handle it
}
catch(final Exception ex)
{
// handle it
}
catch(final Error ex)
{
// handle it
}
catch(final Throwable ex)
{
// handle it
}
}
Обратите внимание, что перехватывать что-либо кроме того, что вам говорит компилятор (исключение IOException в моем примере), не очень хорошая идея, но бывают случаи, и это звучит как один из них, что это может сработать, если вы обращайтесь с ним правильно.
Помните, что такие вещи, как ошибка, очень плохи - у виртуальной машины не хватает памяти и т. Д., Поэтому будьте осторожны с их обработкой (именно поэтому я разделил их на их собственные обработчики, а не просто выполнял catch (final Throwable ex ) и больше ничего).