Скажите, что у меня есть следующий код:
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(myRunnable);
Теперь, если myRunnable
бросает RuntimeExcpetion
, как я могу его поймать? Один из способов - предоставить мою собственную реализацию ThreadFactory
для newSingleThreadExecutor()
и установить собственные uncaughtExceptionHandler
для Thread
, которые выходят из нее. Другой способ - обернуть myRunnable
в локальный (анонимный) Runnable
, содержащий блок try-catch. Возможно, есть и другие подобные обходные пути. Но ... почему-то это кажется грязным, я чувствую, что это не должно быть так сложно. Есть чистое решение?
join
ожидать возникновения исключения? Вы не упомянули об этом в вопросе. - person BalusC   schedule 06.11.2009submit()
иFuture
ниже :-) - person Joonas Pulakka   schedule 06.11.2009