JustPaste.it

Wyjątki w PHP5

Od piątej wersji PHP dostępny jest skuteczny i prosty system obsługi błędów klas – wyjątki wraz z klasą Exception. Tutaj przedstawię prostotę działania tego systemu.

Od piątej wersji PHP dostępny jest skuteczny i prosty system obsługi błędów klas – wyjątki wraz z klasą Exception. Tutaj przedstawię prostotę działania tego systemu.

 

Wstęp

Na początek chciałbym zaznaczyć, że zrozumienie artykułu wymaga podstawowej znajomości PHP wraz z OOP oraz niektórych terminów związanych z programowaniem obiektowym. Od piątej wersji PHP dostępny jest skuteczny i prosty system obsługi błędów klas – wyjątki wraz z klasą Exception. W momencie wykonywania wyjątku przechwytywany on jest do instancji klasy Exception, gdzie przechowywane będą informacje o miejscu wystąpienia błędu oraz teksty informacyjne błędów i ich numery, które możemy utworzyć sami.

Rzucanie” wyjątków

Operacja ta polega na utworzeniu nowego wyjątku w dowolnym miejscu klasy. „Rzucanie” wzięło się od przedrostka throw w wyrażeniu. Wyjątki rzucamy więc za pomocą polecenia:

throw new Exception('Treść błędu lub wyjątku');

 

Użyć tego można na przykład tak:

<?php
class dodaj {
public function __construct($a, $b) {
if (!is_numeric($a) || !is_numeric($b)) {
throw new Exception('Podane argumenty nie są liczbami!');
}
else {
$c = $a + $b;
echo $c;
return $c;
}
}
}

try {
$wynik = new dodaj(5, „abc”);
}
catch (Exception $e) {
echo $e->getMessage();
}
?>

Powyższa klasa sprawdza, czy podane argumenty są liczbami, jeśli nie, to „rzuca” wyjątek z odpowiednią informacją, a w przeciwnym wypadku liczy, wyświetla i zwraca sumę tych argumentów.Następnie obsługiwany jest wyjątek (o tym za chwilę). Zauważcie jednak, że jako argument b podałem ciąg znaków. W tym wypadku na ekranie wyświetli się napis:

Podane argumenty nie są liczbami!

 

Try i catch

Try, jak sama nazwa wskazuje, próbuje wykonać skrypt między klamrami. Jeśli operacja się nie powiedzie, to przechwytuje (catch) do zmiennej e instancję wyjątku (z throw...), a następnie wyświetla wybrane elementy. Podałem tylko jeden element – wiadomość, którą umieściliśmy przy „rzuceniu” wyjątku. Oczywiście jest ich więcej, np.:

  • getCode() - liczbowy kod błędu, definiujemy go przy rzutowaniu zaraz po wiadomości, jako drugi parametr
  • getFile() - zwraca nazwę pliku, w którym wystąpił błąd
  • getLine() - zwraca numer linii w pliku, w której wystąpił błąd


Mam nadzieję, że artykuł ten umili wam życie z PHP5 i klasami.

Jeśli jesteś głodny/głodna wiedzy to zapraszam na stronę: http://pl.php.net/manual/pl/class.exception.php

Licencja: Creative Commons - użycie niekomercyjne - na tych samych warunkach