//Работа с соединениями, во время которой может произойти ошибка
//Завершение работы ввиду невозможности продолжить выполнение из-за ошибки
$myConnxnMgr->cleanup(); ?> ,
В приведенном коде класс Connection_Manager следит за всеми открытыми соединениями. Благодаря этому при возникновении ошибки, которая помешает дальнейшему выполнению кода, приложение может мягко завершиться, выполнив ряд вспомогательных задач, включая закрытие всех открытых соединений.
Переопределение проверки ошибок
В некоторых случаях, например при выполнении директивы кото
рая не возвращает сообщение об ошибке, невозможно определить, возвратила ли функция ошибку, если вывод сообщений подавлен оператором @. В таких случаях используется следующий прием:
<?php
//myFile.inc - включаемый файл error_reporting(0);
define("MY_IMCLUDE_FILE", true);
SmyName = "Marie";
?>
В файле, который надо включить, определяем фиктивную константу MY_IN- CLUDE_FILE:
<?php
//Target, php - файл, из которого вызывается includeQ
@include("myFile.inc");
if (defined("MY_INCLUDE_FILE")) {.
echo($myName); } else {
error_log("Heудалось включить myFile.inc");
}
7>
В целевом сценарии надо проверить, успешно ли выполнилась
функция include(). С этой целью мы определяем фиктивную константу MY_IN- CLUDE_FILE. В target. php, откуда вызывается include(), проверяем, определена ли эта фиктивная константа. Если она определена, значит, файл включен.
Регистрация ошибок
Как мы видели ранее, хорошая стратегия обработки ошибок требует регистрировать их, не вмешиваясь в интерфейс пользователя, для последующего анализа программистом или администратором. РНР предоставляет функцию позволяющую регистрировать ошибки и указывать место, куда должны направляться сообщения об ошибках:
int error_log(string message, int message_type
[, string destination] [, string extra_headers])
Здесь message - это сообщение об ошибках, которое должно быть зарегистрировано, a message_type - тип получателя сообщений об ошибках. Он может быть задан как:
♦ 0 - системный журнал регистрации ошибок; обычно это журнал ошибок веб-сервера. В этом случае третий и четвертый аргументы опускаются. Имя файла системного журнала ошибок можно задать как значение директивы error_log в файле php. ini. Если error_log имеет значение syslog, то ошибки регистрируются в журналах веб-сервера.
♦ 1 - адрес электронной почты. В этом случае третий аргумент задает фактический адрес e-mail, а четвертый - дополнительные заголовки, которые требуется передать в составе сообщения.