Насколько я понимаю, если вы объявите только проверенное исключение, оно будет распространяться через все ваши методы вплоть до метода main и все равно прерывать ваш обычный программный поток, и ваша программа все равно перестанет работать.
Абсолютно. И это хорошо , если что-то случилось, что вы действительно не можете справиться.
Например, предположим, что у вас есть программа, которая собирается обновить вашу базу данных некоторыми данными в файле, но вы не можете загрузить файл.
Вы могли бы просто перехватить исключение, проигнорировать его и все равно перезаписать данные в вашей базе данных ... но это было бы не хорошо. Как только вы окажетесь в ситуации, к которой вы не были готовы, или вы не можете продолжать разумно, остановка является ответственным делом .
Конечно, если вы можете искренне обработать исключение и продолжать, это здорово - но по моему опыту, относительно немного ошибок в этом случае. Если вы пишете приложение на стороне сервера, вы обычно хотите прервать запрос (и выдать ошибку клиенту). Если вы пишете пользовательский интерфейс, вы можете просто отказаться от текущей операции, уведомить пользователей и позволить им продолжать работу ... там немного другая ситуация.
Но безоговорочно перехватывать все исключения и делать вид, что они не произошли?