Если я понимаю, как ты это делаешь, я думаю, что ты делаешь это неправильно.Исключения не для ошибок.Они для исключительных обстоятельств.Ошибки могут означать любое количество вещей (например, пользователь не ввел достаточно длинное имя пользователя в регистрационной форме).Это само по себе не должно быть исключением.Однако вы можете использовать исключение, чтобы показать, что сама регистрация не удалась (в зависимости от ситуации) ...
И вам не нужно иметь блок try / catch на каждом уровне.На самом деле, это плохая практика.Поймайте исключения только в том случае, если вы можете обработать исключение или вам нужно сделать что-то еще, прежде чем разрешить продолжение исключения.Так, например: если вы подключаетесь к удаленному набору веб-сайтов, а первый отказывает.Вы можете поймать исключение для этого и повторить попытку со вторым веб-сайтом.И продолжайте до тех пор, пока у вас не останется больше (в этот момент вы будете выдавать другое исключение, чтобы указать, что ни один веб-сайт не может быть выбран).Другим примером может быть, если вы генерируете изображения.У вас есть метод, который выполняет некоторые вычисления при генерации изображения, которое выдает исключение.Вы захотите перехватить это исключение, чтобы вы могли «очистить» процесс обработки изображений (чтобы сэкономить память и т. Д.), А затем повторно выбросить его, как только закончите: catch (ImageSomethingException $e) { /* Clean up here */ throw $e; }
...
Истинная сила исключений заключается в том, что они позволяют вам обрабатывать ситуации так, как вы хотите (поскольку исключение может просто всплыть наверху программы).Но ловите только те исключения, в которых, как вы знаете, вы можете разобраться с ними (или, по крайней мере, нужно очистить)Вы почти никогда не должны делать print $e->getMessage()
внутри рабочего кода.
Лично у меня есть обработчик исключений по умолчанию , который я всегда устанавливаю.По сути, если исключение не обнаружено, оно регистрирует это исключение, а затем генерирует страницу с ошибкой 500.Это позволяет мне сосредоточиться на тех исключениях, с которыми я могу иметь дело в коде, вместо того, чтобы пытаться поймать все (что обычно не является хорошей идеей) ...
Удачи ...