Я работаю над проектом J2ME, который порождает рабочие потоки для многочисленных задач, таких как загрузка содержимого HTTP. Базовая схема потоков аналогична большинству Java-приложений - здесь есть основной поток пользовательского интерфейса, а рабочие потоки создаются, чтобы делать что-то за кулисами. Мой вопрос заключается в том, как лучше всего обрабатывать исключения, возникающие в рабочих потоках?
Я обычно придерживаюсь обоснования дизайна, что большинство исключений должны быть максимально возможными. Когда я пишу однопоточные приложения, я обычно просачиваю исключения до уровня пользовательского интерфейса, а затем сообщаю о них в диалоговом окне ошибок пользователю. Есть ли подобная практика для многопоточных приложений? Самым интуитивно понятным для меня является перехват исключений в Thread.run (), а затем вызов вызова invokeLater в потоке пользовательского интерфейса, чтобы сообщить об этом в диалоге. Проблема, которую я вижу здесь, заключается в том, что за пределами рабочего потока преждевременно отмирает, этот подход на самом деле не уведомляет поток пользовательского интерфейса об ошибке. Я не вижу четкого способа выбросить исключение, если можно так выразиться, в потоках.
Спасибо,
Andy