PHP: Каков поток управления для обработки ошибок?

Я новичок в PHP, поэтому извиняюсь, если это кажется глупым. Я искал вокруг и не мог найти ничего, что конкретно объясняло то, что я ищу.

В конечном счете у меня есть две цели.

  1. В процессе производства, когда возникает непредвиденная ошибка, покажите пользователю страницу «oops» по умолчанию.
  2. Когда ожидается ожидаемая ошибка, обработайте ее без потери PHP.

Моя ментальная модель обработки ошибок PHP достаточно пятна, и я не могу двигаться вперед с уверенностью, и я не смог найти хорошую документацию об этом процессе.

Чтобы дать некоторые надуманные примеры.

  1. пользователь делает запрос, соединение с БД не выполняется, отображается сообщение oops.
  2. пользователь делает запрос, скрипт не анализируется корректно, мы выводим сообщение oops.
  3. пользователь делает запрос, мы запрашиваем БД с обновлением, используя оптимистичную блокировку. Он не работает, поэтому мы информируем пользователя о том, что объект был обновлен.

Я думаю, что большая часть моей путаницы связана с тем, какие ошибки приводят к смерти сценария, а какие нет (используя обработчик по умолчанию), а когда скрипт умирает, как мы изящно информируем пользователя?

Кроме того, какие-либо из стандартных функций / объектов php используют исключения? Если я предпочитаю обрабатывать исключения в более стиле C, я не удивлюсь ни в какой точке? Это изменится в PHP6? Если это так, я приложу усилие к работе над различиями между использованием стиля и исключений c, но если нет, я бы предпочел просто использовать стиль c последовательно на PHP5. Это не проблема, которую я заинтересован в решении, если я не нуждаюсь в этом.

edit: Я только понял, что контент не совсем соответствует названию. Я хотел бы знать, когда возникает ошибка, каков логический поток для PHP? Таким образом, я могу лучше понять, как достичь своих целей в отношении обработки ошибок в PHP.

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

Однако вы можете обходиться с этим путем создания настраиваемого обработчика ошибок и исключения исключений вместо ошибки. (PHP, когда это возможно, запускает ваш обработчик, прежде чем обрабатывать ошибку внутренне, поэтому вы можете фактически исключить Исключения обычным способом.)

Я написал кучу кода, который вы могли бы использовать для этой ситуации в моем ответе здесь: PHP: исключения против ошибок?

Если php не может фактически проанализировать ваш файл, вы в значительной степени зависаете, php будет сильно разбиваться при большинстве ситуаций, когда он не может разобрать файл. Хотя вы можете попытаться написать свою собственную функцию включения, которая будет содержать файл eval , прежде чем включать его, и просто пропустить, если eval неудачно. Вы должны быть уверены, что можете в основном доверять файлам.

Исключения хорошо интегрированы в PHP5 . Они имеют тот же синтаксис try/catch что и исключения Java / C ++. Используйте их при ожидаемой ошибке.

Если вы хотите показать пользовательскую страницу « oops », вы можете использовать set_exception_handler в сочетании с trigger_error . Дополнительные советы рассмотрим эту ссылку.