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