Использование пустого блока try...except в Delphi

Есть несколько доводов чтобы никогда не использовать пустой блок try...except, такой как

try
  <какой-то код>
except
end
1
2
3
4

А причин чтобы применять такую конструкцию мне найти не удалось.

1. Исключения для исключений, не для логики

Исключения нужны для непредвиденных ситуаций. Если ситуация рассматривается как ожидаемая или вероятная, то нужно использовать обычные условия.

Например, если файл который открывает программа всегда находится в требуемом месте и нет причин ожидать что его не будет, то проверку можно организовать через исключения. Если же файл может переместить пользователь и логика работы программы допускает или позволяет это сделать, то обработка должна быть организована другими средствами — не исключениями.

Следовательно, блокирование исключения не имеет смысла. Если какая-то проблема предполагалась, то надо обработать её через условия. Если возможны какие-то исключения и их нужно обрабатывать, то должен быть какой-то код в внутри except. Если же не первое не второе то зачем этот пустой блок?

2. Трудности с отладкой

Сокрытие ошибки без сообщения затрудняет поиск проблемы. Программа просто ведёт себя не так как ожидается, никакого сообщения нет, что смотреть в первую очередь непонятно. Если бы выходило исключение то проблемное место было бы проще найти (например при использовании EurekaLogopen in new window), была бы хоть какая-то информация о проблеме.

3. Временное решение

Предположим, появляется ошибка причина которой непонятна. Участок кода не критичен и чтобы её скрыть применяется такая конструкция.

Такой подход допустим временно, если ситуация критичная и нужно срочно решить проблему. Но это именно временное решение. Дальше всё равно нужно разобраться и исправить корень проблемы. Если этого не сделать, то не решённая должным образом проблема может проявиться и другим способом. А для получения дополнительной информации, чтобы было проще искать проблему, можно например использовать логирование в блоке except, вместо того чтобы оставлять его пустым.

4. Запись в лог

Даже если это действительно какая-то особая ситуация, то можно как минимум записать это в лог и потом решить что делать. Ситуация не останется незамеченной, при любом странном поведении можно будет просмотреть этот лог.

Последниее изменение: 24.08.2023, 06:42:55