Я отвечаю на "Однако, остановка процесса - это худший результат ..."
Если вы можете обработать исключение, запустив другой код (используя try / catch в качестве потока управления), повторные попытки, ожидание и повторные попытки, повторные попытки с использованием другого, но эквивалентного метода (т. Е. Метода отката), тогда непременно сделайте это.
Также приятно выполнять замену и регистрацию сообщений об ошибках, если только псевдо-вежливо-пассивно-агрессивный «свяжется с вашим администратором» (когда вы знаете, что администратора нет, а администратор не может ничего сделать об этом!) Но после того, как вы это сделаете, приложение должно завершиться, то есть то же поведение, которое вы получаете с необработанным исключением.
С другой стороны, если вы намереваетесь обработать исключение, возвращая пользователя в поток кода, который потенциально разрушил его состояние, я бы сказал, что это хуже , чем завершение приложения и разрешение Пользователь начинает заново. Для пользователя лучше перезапустить в начале или лучше позволить пользователю уничтожать данные?
Если я получаю неожиданное исключение в модуле, которое определяет, с каких счетов я могу снять деньги, действительно ли я хочу войти в систему и сообщить об исключении и вернуть пользователя на экран вывода денег? Насколько мы знаем, мы только что дали ему право снимать деньги со всех счетов!