Поиск
Использование инструкции die
Последний тип ошибок всевозможные нештатные ситуации. Они возникают, когда какоелибо событие на сервере происходит не так, как обычно. К счас тью, нештатные ситуации более редки, чем ошибки программирования. На пример, если база данных MySQL не работает, то все связанные с ней функции генерируют ошибки. Или; как мы видели в примере со страницей email.php, если серверное приложение электронной почты не функционирует (на серве ре UNIX), это тоже создаст проблему. Хотя системные ошибки не зависят от программиста, их необходимо иметь в виду при написании кода.
Дальнейшее распространение ошибок можно остановить с помощью ин струкции die. Эта инструкция заставляет РНР прекратить исполнение сцена рия, как только происходит первая ошибка и дальнейшая работа невозможна. Она также может отправить в браузер сообщение об ошибке или вызвать функ цию. Например,
$Link=mysql_connect($Host,$User,$Password) or die
—("Couldn't connect to database.");
Если по какойлибо причине не удается установить связь с базой данных, сценарий прекратит свое исполнение и напечатает сообщение «Couldn't connect to database».
$Link=mysql_connect($Host,$User,$Password) or die (mysql_error()};
В этом примере, если код РНР не может установить связь с базой данных, инструкция die вызовет функцию mysql_error ( ) . Эта функция напечатает реальную ошибку, сгенерированную базой данных MySQL.
Оба примера работают: если код РНР определит, что первая часть условной конструкции or (значение, возвращаемое функцией mysgl_connect) имеет лож ное значение, то будет инициирована вторая часть условной конструкции (ин струкция die) с целью узнать значение всего логического оператора. Другими словами, строка «говорит»: если установить связь с сервером БД невозможно, делай это. Если связь с базой устанавливается, значит, это то, что требовалось, и вторая часть логического оператора or не проверяется и не выполняется. Добавим инструкцию die в базовый сценарий, который устанавливает связь с MySQL, а затем пытается выбрать базу данных.
Выполнение действия
- Создайте новый PHPдокумент в текстовом редакторе.
- Начните со стандартного HTMLдокумента.
- Откройте PHPраздел и задайте переменные для доступа в базу данных.
- Отключите отчеты об ошибках.
- Подсоединитесь к базе MySQL.
- Выберите базу данных.
- Отключите связь с MySQL и закройте РНРраздел.
- Создайте простое сообщение и закройте HTMLстраницу.
- Сохраните сценарий как die.php (листинг 14.6), загрузите его на сервер
и протестируйте в браузере (рис. 14.1114.13).
Листинг 14.6 т Для сценариев, состоящих из нескольких строк кода, каждая из.которых зависит от успешного исполнения предыдущей строки, инструкция die бесценна для прекращения дальнейшего распространения ошибок и их бы строго обнаружения. В связи с тем что инструкция die обрабатывает ошибки, встроенная в РНР обработка ошибок была выключена (сравните рис. 14.11 и 14.13).
<HTML>
<HEAD>
<TITLE>Die!</TITLE></HEAD>
<BODY>
<?php
// Установка значений переменных для доступа к базе данных.
$Host = "localhost";
$User = "username";
$Password = "password";
$DBName = "database";
error_reporting(0);
Так как все ошибки будут обслуживаться инструкцией die, мы отключаем заданный по умолчанию метод информирования об ошибках во избежание избыточности.
$Link = mysql_connect ($Host, $User, $Password) or die("Couldn't
connect to the database!");
Эта строка кода «говорит» РНР попытаться установить связь с MySQL. Если по какойлибо причине сделать этого не удается, вы увидите сообщение «Couldn't connect to database», а исполнение сценария приостановится. Очень важно сразу же остановить исполнение сценария: если не удастся подсоеди ниться к базе данных, следующие две строки кода, зависящие именно от этой "операции, также вызовут сообщения об ошибках. (В действительности сообще ние об ошибке не появится, так как мы отключили функцию error_reporting, но программа работать не будет).
mysql_select_db ($DBName, $Link) or die (mysql_error (•) ) ;
Если выбрать базу данных, определенную в аргументе $DBName, не удалось, то сценарий прекратит исполнение и будет распечатано сообщение об ошиб ке, сгенерированное MySQL.
mysql_close ($Link);
?>
Testing the die statement!
</BODY>
</HTML>
Я добавил эту текстовую строку, чтобы страница имела какоелибо содержа ние. Страницу легко модифицировать, чтобы она отправляла в базу данных и запросы.
1 <HTML>
2 <HEAD>
3 <TITLE>Die!</TITLEx/HEAD>
4 <BODY>
5 <?php
6 // Установка переменных для доступа к базе данных.
7 $Host = "localhost";
8 $User = "username";
9 $Password = "password";
10 $DBName = "database";
11 error_reporting(0);
12 $Link = mysgl_eonnect ($Host, $User, $Password) or die("Couldn't
connect to thedatabase!");
13 mysql_select_db ($DBName, $Link) or die(myeql_error());
14 mysql_close ($Link);
15 ?>
16 Testing the die statement!
17 </BODY>
18 </HTML>
Вы можете предотвратить создание сообщений об ошибках с помощью разме щения символа коммерческое «а» перед вызовом любой функции. Символ @ на зывают оператором управления ошибками, он подавляет любые сообщения об ошибках, вызванные функцией, перед которой стоит. Символ используется сле дующим образом:
$Link=@mysql_connect ($Host, $User, $Password);
$Link =@mysql_connect ($Host, $User, $Password) or
—die(print_message("Couldn't connect."));