Login lub e-mail Hasło   

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.
Wyświetlenia: 2.665 Zamieszczono 02/03/2009

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

Podobne artykuły


36
komentarze: 7 | wyświetlenia: 5480
54
komentarze: 84 | wyświetlenia: 10812
44
komentarze: 41 | wyświetlenia: 6079
42
komentarze: 31 | wyświetlenia: 9755
41
komentarze: 16 | wyświetlenia: 55802
32
komentarze: 42 | wyświetlenia: 2465
19
komentarze: 5 | wyświetlenia: 2326
17
komentarze: 8 | wyświetlenia: 5679
16
komentarze: 8 | wyświetlenia: 10046
14
komentarze: 40 | wyświetlenia: 4109
13
komentarze: 5 | wyświetlenia: 8848
 
Autor
Artykuł
Dodatkowe informacje



  Dawid Baruch  (www),  03/03/2009

strasznie "delikatnie" potraktowałeś wyjątki

W sumie można by jeszcze napisać o klasach potomnych, klonowaniu i debug_print_backtrace(), ale tak to już wszystko jest. Poza tym to mój pierwszy artykuł, więc proszę o wyrozumiałość. :)



Dodaj swoją opinię
W trosce o jakość komentarzy wymagamy od użytkowników, aby zalogowali się przed dodaniem komentarza. Jeżeli nie posiadasz jeszcze swojego konta, zarejestruj się. To tylko chwila, a uzyskasz dostęp do dodatkowych możliwości!
 

© 2005-2018 grupa EIOBA. Wrocław, Polska