Если вы хотите, чтобы ошибка была обработана на другом уровне приложения.
Вот полубетонный пример. Допустим, у меня есть веб-приложение, которое реализовано в виде последовательности состояний и действий . Предположим, что во время обработки состояния при доступе к базе данных создается SQLException
. Это не произойдет во время нормальной работы моего приложения; это произойдет только в том случае, если с базой данных что-то не так.
Метод, который обращается к базе данных, не должен знать, какова моя процедура обработки таких ошибок, как эта. Эта логика реализована на более высоком уровне - в методе, который обрабатывает состояние - и он по сути одинаков для любой ошибки времени выполнения, буквально RuntimeException
или нет: выкладываете приятное сообщение об ошибке пользователю, говорящему ему: обратитесь в службу технической поддержки.
Представьте себе, если бы мне пришлось добавить блок try
/ catch
, выполняющий эту логику, к каждому методу, который обращался к базе данных и мог бы выбросить SQLException
. Это то, что называется nightmare
.