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