POWRÓT NA STRONĘ SZKOŁY

Obsługa wyjątków w PHP

Zacznijmy od wyjaśnienia pojęcia wyjątek. Jak sama nazwa wskazuje, to coś co różni się od sytuacji typowej. Na przykład wyjątkiem dla dzielenia będzie dzielenie przez zero. Każdą liczbę możemy podzielić przez dowolna inną liczbę, z wyjątkiem zera. PHP oferuje prosty mechanizm pozwalający zabezpieczyć program przed wyjątkami.

Ćwiczenie 8_0_0_1. Dzielenie przez zero bez obsługi wyjątku

Tworzymy jeden plik dzienie_przez_0_1.php:

<!doctype html>
<html>
  <head>
    <title>Testowanie skryptów PHP</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <?php
      $a=5;
      $b=0;
      $iloraz=$a/$b;
    ?> 
  </body>
</html>

Widzimy komunikat o błędzie niezbyt przyjazny dla użytkownika.

Ćwiczenie 8_0_0_2. Dzielenie przez zero z obsługą wyjątku

Tworzymy jeden plik dzienie_przez_0_2.php:

<!doctype html>
<html>
  <head>
    <title>Testowanie skryptów PHP</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <?php
      try
      {
        $a=5;
        $b=0;
        if ($b==0) throw new Exception('Nie ma dzielenia przez zero!');
        $iloraz=$a/$b;
      }
      catch(Exception $e)
      {
        echo $e->getMessage();
      }
    ?> 
  </body>
</html>

PHP próbuje (ang. try) wykonać kod umieszczony w nawiasach klamrowych po słowie try. Jeżeli kod ten zostanie wykonany bez żadnego problemu czy błędu, blok catch zostanie pominięty. Jeżeli jednak w bloku try wystąpi błąd (sytuacja wyjątkowa), zostanie on przechwycony (ang. catch) jako obiekt klasy Exception i sterowanie przekazane zostanie do bloku catch. W bloku tym możemy wykorzystać metody udostępniane przez obiekt klasy Exception. Metody te umożliwiają uzyskanie informacji o błędzie (wyjątku), które to informacje można przedstawić w sposób elegancki użytkownikowi.

Zgłoszenie wyjątku (inaczej wyrzucenie, od ang. throw — rzucać), jest wygenerowaniem wyjątku w dowolnej sytuacji, którą projektując aplikację, uznamy za wyjątkową. Zgłoszenie wyjątku to nic innego jak informacja dla PHP, że wystąpiła sytuacja nadzwyczajna, która wymaga specjalnej obsługi. Z reguły jest to informacja o błędzie.

W tym przykładzie występuje klasa Exception oraz jej metota getMessage(). Już podczas następnych zajęć będziecie poznawać podstawy programowania obiektowego w PHP, z którym związane są te pojęcia.