Аргерих Л. О языке РНР. Часть 1. Страница 128


// если включен подробный вывод сообщения об ошибке myLog("Failed to open nosuchfile.txt"); echo($php_errormsg);

//корректирующее действие - использовать альтернативную строку текста $text = $default_text; } else {

//сообщения об ошибках отключены myLog("Failed to open nosuchfile.txt"); $text = $default_text;

}

echo("lext read: . $text);

//Упрощенный вариант функции регистрации сообщений об ошибках

function mvLog($msg) {

echo("<h2>" . $msg . "</h2>");

}

Приведенный сценарий пытается открыть файл и прочесть из него строку текста. Если оказывается, что сделать это невозможно, то используется аль­тернативная строка текста. Флаг $verbose определяет, подробным или крат­ким должно быть сообщение об ошибке. С помощью оператора @ можно пода­вить сообщение об ошибке, если она возникнет, а затем вывести сообщение, основываясь назначении переменной $verbose.

В случае сокращенного вывода ошибка просто регистрируется, и выполня­ются корректирующие действия, которые в данном случае состоят в присва­ивании переменной $text альтернативного текстового значения. В случае подробного вывода ошибка записывается в журнал, а также выводится сис­темное сообщение об ошибке, после чего выполняется корректирующее действие.

Восстановление после ошибок

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

<?php

//Error_Rec. php

class Connection_Manager <

var $connections;

//Эта функция открывает соединение и добавляет его //к списку открытых соединений

function openConnection($host, $user, $pass) {

//попытка соединения с базой данных mysql $mysql_link = @mysql_conneet($host, $user, $pass); /'/поместить идентификатор соединения в массив connections if (FALSE !== $mysql_link) {

$this->connections[] = $mysql_link;

}

return

}

//Эту функцию следует вызвать, когда все соединения должны быть закрыты

function {

foreach <$this->connections as $id) ЗЯ @mysql_close($id);

>

}

}

//Создание экземпляра класса SmyConnxnMgr = new Connection_Manager();

//Для создания новых соединений используется класс Connection_Manager $connxn1 = $myConnxnMgr->openConnection("mysqldb.wrox.com", "dbuser", "dbpassword");




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