php ООП Исключения или умереть ()?
Я разрабатываю какой-то проект. И я хочу контролировать разные ошибки. Я знаю, что во всех популярных фреймворках и php проектах есть разные исключения. Но я думаю, что это не требуется работа. Если произошла ошибка, мы можем сделать die() с нашим сообщением. 1. Каковы основные плюсы исключений? 2. Могу ли я контролировать свои ошибки с помощью die()?
Спасибо.
3 ответа
Ну, вы могли бы использовать die()
, Но это делает все ошибки роковыми. Это означает, что вы не можете попытаться исправить ошибку вообще. В некоторых случаях это нормально.
Но в большинстве случаев вам может потребоваться возможность "очистить" после ошибки или попробовать другой метод. Вот где исключения пригодятся... Они позволяют вам выбрать, где и если вы хотите обработать ошибку. Они позволяют вам попытаться изящно оправиться от ошибок.
Например, допустим, у вас есть метод, который загружает файл с удаленного сервера: downloadFromRemoteServer($address);
Если вы используете die()
, если загрузка не удалась, скрипт завершается. Конец истории.
Но если вы используете исключения, вы можете попробовать другой сервер или даже другой метод (HTTP против FTP и т. Д.):
try {
$file = downloadFromRemoteServer('http://example.com/foo');
} catch (DownloadFailedException $e) {
try {
$file = downloadFromRemoteServer('http://secondtry.example.com/foo');
} catch (DownloadFailedException $e2) {
die('Could not download file');
}
}
return $file;
Но помните, что исключения полезны только для исключительных обстоятельств. Они не предназначены для использования при любой возможной ошибке. Например, если пользователь не подтверждает свой адрес электронной почты правильно, это не исключение. Но если вы не можете подключиться к серверу базы данных или конфликтуете с БД, это будет исключение...
Александр,
die () и исключения делают разные вещи.
языковая конструкция "die" просто останавливает выполнение скрипта и, возможно, выводит параметры, если он был вызван как функция.
С другой стороны, исключения являются более продвинутыми структурами, которые используются в контекстах ООП, чтобы дать разработчику больше гибкости в отношении того, нужно ли останавливать сценарий и, если да, каким образом, какой вывод показывать пользователю и т. Д.
Исключения немного более сложны, чем это, поэтому вам, возможно, следует сначала документировать себя с помощью некоторого ООП или, в этом отношении, прочитать о Zend Framework, и вы поймете, что такое исключения.
Для простых вещей вы всегда можете использовать выход (или умереть, что одно и то же).
Надеюсь это поможет, славянка
1 Каковы основные плюсы исключений?
Основными преимуществами являются:
- сбойные функции не должны загрязнять их возврат ошибочными условиями
- Типизированные исключения могут быть обработаны на соответствующих уровнях в коде, вы решаете, какая часть кода может обрабатывать какие ошибки
- Вы можете хранить гораздо больше информации о состоянии ошибки в самом исключении, что облегчает его обработку и, возможно, восстановление после нее.
2 Могу ли я контролировать свои ошибки с помощью die()?
Я вряд ли назвал бы это контролем, я бы назвал это разочарованием от фактической обработки ошибки. Ни в одном из моих проектов нет die()
на самом деле удобный, и все эти die('...some error condition...');
примеры кода PHP ИМХО подходят только для проектов в разработке. В процессе работы вы хотите, чтобы ваши пользователи могли продолжать свои задачи / программы самым простым способом, поэтому попробуйте "повторить попытку" (если условие ошибки вряд ли будет выполнено снова), "извините, это не работает "/ другие виды сообщений, формы / страницы все более желательны, чем die()
,