Samouczek PHP

Strona główna PHP Wprowadzenie do PHP Instalacja PHP Składnia PHP Komentarze PHP Zmienne PHP PHP Echo / Drukuj Typy danych PHP Ciągi PHP Liczby PHP Matematyka w PHP Stałe PHP Operatory PHP PHP Jeśli...Inne...Elseif Przełącznik PHP Pętle PHP Funkcje PHP Tablice PHP PHP Superglobals PHP RegEx

Formularze PHP

Obsługa formularzy PHP Walidacja formularzy PHP Wymagany formularz PHP Adres URL/e-mail formularza PHP Formularz PHP kompletny

Zaawansowany PHP

Data i godzina w PHP Uwzględnij PHP Obsługa plików PHP Otwórz/odczytaj plik PHP Tworzenie/zapisywanie plików PHP Przesyłanie plików PHP Pliki cookie PHP Sesje PHP Filtry PHP Zaawansowane filtry PHP Funkcje wywołania zwrotnego PHP PHP JSON Wyjątki PHP

PHP OOP

PHP Co to jest OOP Klasy/obiekty PHP Konstruktor PHP Destruktor PHP Modyfikatory dostępu PHP Dziedziczenie PHP Stałe PHP Klasy abstrakcyjne PHP Interfejsy PHP Cechy PHP Metody statyczne PHP Właściwości statyczne PHP Przestrzenie nazw PHP Iterowalne PHP

Baza danych MySQL

Baza danych MySQL Połączenie MySQL Tworzenie bazy danych MySQL Utwórz tabelę MySQL Wstaw dane MySQL Pobierz ostatni identyfikator MySQL Wstaw wiele MySQL Przygotowano MySQL Wybierz dane MySQL MySQL Gdzie Zamów MySQL według Usuń dane MySQL Dane aktualizacji MySQL Dane limitu MySQL

PHP XML

Parsery PHP XML Parser PHP SimpleXML PHP SimpleXML — Get Rozszerzenie PHP XML PHP XML DOM

PHP - AJAX

Wprowadzenie do AJAX AJAX PHP Baza danych AJAX XML AJAX Wyszukiwanie na żywo AJAX Ankieta AJAX

Przykłady PHP

Przykłady PHP Kompilator PHP Quiz PHP Ćwiczenia PHP Certyfikat PHP

Odniesienie do PHP

Przegląd PHP Tablica PHP Kalendarz PHP Data PHP Katalog PHP Błąd PHP Wyjątek PHP System plików PHP Filtr PHP PHP FTP PHP JSON Słowa kluczowe PHP Biblioteka PHP Poczta PHP Matematyka w PHP Różne PHP PHP MySQLi Sieć PHP Kontrola wyjścia PHP PHP RegEx PHP SimpleXML Strumień PHP ciąg PHP Obsługa zmiennych PHP Parser PHP XML Kod pocztowy PHP Strefy czasowe PHP

Wyjątki PHP


Co to jest wyjątek?

Wyjątek to obiekt opisujący błąd lub nieoczekiwane zachowanie skryptu PHP.

Wiele funkcji i klas PHP zgłasza wyjątki.

Funkcje i klasy zdefiniowane przez użytkownika mogą również zgłaszać wyjątki.

Wyjątki to dobry sposób na zatrzymanie funkcji, gdy napotka dane, których nie może użyć.


Zgłaszanie wyjątku

Instrukcja throwumożliwia zdefiniowanej przez użytkownika funkcji lub metodzie zgłoszenie wyjątku. Gdy zostanie zgłoszony wyjątek, następujący po nim kod nie zostanie wykonany.

Jeśli wyjątek nie zostanie przechwycony, wystąpi błąd krytyczny z komunikatem „Nieprzechwycony wyjątek”.

Spróbujmy rzucić wyjątek bez przechwytywania:

Przykład

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

echo divide(5, 0);
?>

Wynik będzie wyglądał mniej więcej tak:

Fatal error: Uncaught Exception: Division by zero in C:\webfolder\test.php:4
Stack trace: #0 C:\webfolder\test.php(9):
divide(5, 0) #1 {main} thrown in C:\webfolder\test.php on line 4

Oświadczenie try...catch

Aby uniknąć błędu z powyższego przykładu, możemy użyć try...catchinstrukcji do przechwycenia wyjątków i kontynuowania procesu.

Składnia

try {
  code that can throw exceptions
} catch(Exception $e) {
  code that runs when an exception is caught
}

Przykład

Pokaż komunikat, gdy zostanie zgłoszony wyjątek:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $e) {
  echo "Unable to divide.";
}
?>

Blok catch wskazuje, jaki typ wyjątku powinien zostać przechwycony oraz nazwę zmiennej, która może być użyta do uzyskania dostępu do wyjątku. W powyższym przykładzie typ wyjątku to Exception, a nazwa zmiennej to $e.


Próba... złapać... w końcu Oświadczenie

Instrukcja try...catch...finallymoże służyć do przechwytywania wyjątków. Kod w finallybloku będzie zawsze działał niezależnie od tego, czy został przechwycony wyjątek. Jeśli finallyjest obecny, catchblok jest opcjonalny.

Składnia

try {
  code that can throw exceptions
} catch(Exception $e) {
  code that runs when an exception is caught
} finally {
  code that always runs regardless of whether an exception was caught
}

Przykład

Pokaż komunikat, gdy zostanie zgłoszony wyjątek, a następnie wskaż, że proces się zakończył:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $e) {
  echo "Unable to divide. ";
} finally {
  echo "Process complete.";
}
?>

Przykład

Wypisuje ciąg, nawet jeśli nie został przechwycony wyjątek:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} finally {
  echo "Process complete.";
}
?>

Obiekt wyjątku

Obiekt Exception zawiera informacje o błędzie lub nieoczekiwanym zachowaniu napotkanym przez funkcję.

Składnia

new Exception(message, code, previous)

Wartości parametrów

Parameter Description
message Optional. A string describing why the exception was thrown
code Optional. An integer that can be used used to easily distinguish this exception from others of the same type
previous Optional. If this exception was thrown in a catch block of another exception, it is recommended to pass that exception into this parameter

Metody

Podczas przechwytywania wyjątku w poniższej tabeli przedstawiono niektóre metody, których można użyć do uzyskania informacji o wyjątku:

Method Description
getMessage() Returns a string describing why the exception was thrown
getPrevious() If this exception was triggered by another one, this method returns the previous exception. If not, then it returns null
getCode() Returns the exception code
getFile() Returns the full path of the file in which the exception was thrown
getLine() Returns the line number of the line of code which threw the exception

Przykład

Wyświetl informacje o zgłoszonym wyjątku:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero", 1);
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $ex) {
  $code = $ex->getCode();
  $message = $ex->getMessage();
  $file = $ex->getFile();
  $line = $ex->getLine();
  echo "Exception thrown in $file on line $line: [Code $code]
  $message";
}
?>

Pełne odniesienie do wyjątków

Aby uzyskać pełne informacje, przejdź do naszej Kompletnej dokumentacji wyjątków PHP .

Odwołanie zawiera opisy i przykłady wszystkich metod Exception.