php ООП Исключения или умереть ()? - PullRequest
2 голосов
/ 02 октября 2010

Я разрабатываю какой-то проект.И я хочу контролировать разные ошибки.Я знаю, что во всех популярных фреймворках и php проектах есть разные исключения.Но я думаю, что это не требуется работа.Если произошла ошибка, мы можем сделать die () с нашим сообщением.1. Каковы основные плюсы исключений?2. Могу ли я контролировать свои ошибки с помощью die ()?

Спасибо.

Ответы [ 3 ]

6 голосов
/ 02 октября 2010

Ну, вы можете использовать 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;

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

2 голосов
/ 02 октября 2010

Александр

die () и исключения делают разные вещи.

языковая конструкция "die" просто останавливает выполнение скрипта и, возможно, выводит параметры, если он был вызван как функция.

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

Исключения немного более сложны, чем эта, поэтому вам, возможно, следует сначала документировать себя с помощью некоторого ООП или, в этом отношении, прочитать о Zend Framework, и вы поймете, что такое исключения.

Для простых вещей вы всегда можете использовать выход (или умереть, что одно и то же).

Надеюсь, это поможет, Славянская

1 голос
/ 02 октября 2010

1 Каковы основные плюсы исключений?

Основными преимуществами являются:

  • сбойные функции не должны загрязнять свой возврат ошибкойусловия
  • типизированные исключения могут обрабатываться на соответствующих уровнях кода; вы решаете, какая часть кода может обрабатывать, с какими ошибками
  • вы можете хранить гораздо больше информации оусловие ошибки в самом исключении, облегчающее его обработку и, возможно, восстановление после него.

2 Можно ли контролировать свои ошибки с помощью die ()?

Я бы вряд ли назвал это контролем, я бы назвал это разочарованием в фактической обработке ошибки.Ни разу в моих проектах die() на самом деле не было бы удобно, и все эти die('...some error condition...'); примеры кода PHP ИМХО подходят только для проектов в разработке.В процессе работы вы хотите, чтобы ваши пользователи могли продолжать свои задачи / программы самым простым способом, поэтому попробуйте «повторить попытку» (если условие ошибки вряд ли будет выполнено снова), «извините, это не работает'/ другие виды сообщений, формы / страницы более желательны, чем die().

...