Использование инструкции 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, а затем пытается выбрать базу данных.

Выполнение действия

  1. Создайте новый PHPдокумент в текстовом редакторе.
  2. Начните со стандартного HTMLдокумента.

  3. <HTML>
    <HEAD>
    <TITLE>Die!</TITLE></HEAD>
    <BODY>

  4. Откройте PHPраздел и задайте переменные для доступа в базу данных.

  5. <?php
    // Установка значений переменных для доступа к базе данных.
    $Host = "localhost";
    $User = "username";
    $Password = "password";
    $DBName = "database";

  6. Отключите отчеты об ошибках.

  7. error_reporting(0);

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

  8. Подсоединитесь к базе MySQL.

  9. $Link = mysql_connect ($Host, $User, $Password) or die("Couldn't
    connect to the database!");

    Эта строка кода «говорит» РНР попытаться установить связь с MySQL.
    Если по какойлибо причине сделать этого не удается, вы увидите сообщение
    «Couldn’t connect to database», а исполнение сценария приостановится. Очень
    важно сразу же остановить исполнение сценария: если не удастся подсоеди
    ниться к базе данных, следующие две строки кода, зависящие именно от этой
    "операции, также вызовут сообщения об ошибках. (В действительности сообще
    ние об ошибке не появится, так как мы отключили функцию error_reporting,
    но программа работать не будет).

  10. Выберите базу данных.

  11. mysql_select_db ($DBName, $Link) or die (mysql_error (•) ) ;

    Если выбрать базу данных, определенную в аргументе $DBName, не удалось,
    то сценарий прекратит исполнение и будет распечатано сообщение об ошиб
    ке, сгенерированное MySQL.

  12. Отключите связь с MySQL и закройте РНРраздел.

  13. mysql_close ($Link);
    ?>

  14. Создайте простое сообщение и закройте HTMLстраницу.

  15. Testing the die statement!
    </BODY>
    </HTML>

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

  16. Сохраните сценарий как die.php (листинг 14.6), загрузите его на сервер
    и протестируйте в браузере (рис. 14.1114.13).
    Листинг 14.6 т Для сценариев, состоящих из нескольких строк кода, каждая
    из.которых зависит от успешного исполнения предыдущей строки, инструкция
    die бесценна для прекращения дальнейшего распространения ошибок и их бы
    строго обнаружения. В связи с тем что инструкция die обрабатывает ошибки,
    встроенная в РНР обработка ошибок была выключена (сравните рис. 14.11
    и 14.13).

  17. 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);

Обратите внимание на отсутствие пробела между знаком @ и именем функции,
а также на то, что подавление сообщений не меняет результат, выдаваемый функ
цией. В отличие от инструкции die символ @ не дает вам возможности распеча
тать сообщение об ошибке или вызвать функцию.
Инструкцию die можно использовать и для вызова ваших собственных функций.
Например, если вы создали функцию для печати сообщений об ошибках в опре
деленном формате, можно воспользоваться данной инструкцией:

$Link =@mysql_connect ($Host, $User, $Password) or
—die(print_message("Couldn't connect."));

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: