Вы никогда не должны молча игнорировать ошибки, потому что ваша программа построена на серии действий, которые неявным образом зависят от всего, что было сделано до их исправления. Если на шаге 3 что-то пойдет не так, и вы попытаетесь перейти к шагу 4, шаг 4 будет начинаться на основе неверных предположений, что повышает вероятность того, что он также приведет к возникновению ошибки. (И если вы проигнорируете это тоже, то шаг 5 выдает ошибку, и оттуда вещи начнут расти как снежный ком.)
Дело в том, что по мере накопления ошибок в конечном итоге вы столкнетесь с такой большой ошибкой, что не сможете ее игнорировать, потому что она будет состоять из чего-то, что дается пользователю, и что это будет совершенно неправильно. Тогда у вас есть пользователи, которые жалуются на то, что ваша программа не работает должным образом, и вы должны это исправить. И если часть «дать что-то пользователю» находится на шаге 28, и вы не представляете, что первоначальная ошибка, которая привела ко всему этому беспорядку, была на шаге 3, потому что вы проигнорировали ошибку на шаге 3, вы получите черт возьми, отладка проблемы!
С другой стороны, если эта ошибка на шаге 3 приводит к тому, что все вспыхивает на лице пользователя, и генерирует ошибку, говоря SOMETHING WENT BADLY WRONG IN STEP 3!
(или ее технический эквивалент, трассировка стека), то результат будет тем же - пользователь жаловался на вас программа не работает должным образом - но на этот раз вы точно знаете, с чего начать, когда будете ее исправлять .
РЕДАКТИРОВАТЬ: В ответ на комментарии, если что-то идет не так, как вы ожидали и знаете, как справиться, это другое. Например, в случае получения искаженного сообщения это не является ошибкой программы; это «пользователь предоставил неверный ввод, который не прошел проверку». Соответствующий ответ - сообщить пользователю, что он вводит вам недопустимые данные, как, по вашему мнению, вы и делаете. Нет необходимости аварийно завершать работу и генерировать трассировку стека в таком случае.