как они сообщаются пользователю?Как лучше всего обрабатывать непроверенные исключения?
В нашем приложении мы вообще не используем никаких исключений: ни проверенных, ни непроверенных (мы рассматриваем проверенные исключения как особенность Java, не связанную спроблемная область, с которой мы имеем дело, поэтому мы проверяем большинство проверенных исключений внутри более чистых API, используя методы тестирования состояния).
Способ, которым мы имеем дело с ним, прост: это настольное приложение, если мы улавливаем необработанное исключениеМы предлагаем пользователю возможность отправить нам отчет.Все, что нужно сделать пользователю, это нажать «Отчет», и мы получим полную трассировку стека и другую информацию, отправленную на один из наших серверов.
Вы можете настроить обработчик неперехваченных исключений для всего приложения, например, так:
Thread.setDefaultUncaughtExceptionHandler( new Thread.UncaughtExceptionHandler() {
public void uncaughtException( final Thread t, final Throwable e ) {
...
// Here we offer our user the possibility to 'report' the exception, YMMV
}
}
Как правило, в нашем программном обеспечении происходит исключение ноль : мы не используем проверенное исключение для управления потоком данных (если только мы не используем «мертвые» API из девяностых, гдеэто была обычная практика).
Некоторые фреймворки, такие как Spring, также имеют довольно сильное предпочтение менталитету «нет проверенных исключений» .
Так что исключения для нас действительно исключительный, поэтому всплывающее окно предупреждает пользователя о сбое приложения и дает ему возможность отправить нам отчет.