Obsługa wyjątków w PHP
Stronę tą wyświetlono już: 2127 razy
Obsługa wyjątków w PHP za pomocą instrukcji try, catch wygląda następująco:
- <?php
- $x = 0;
- try{
- if(!$x)
- throw new Exception("Próbujesz obliczyć logarytm naturalny z zera");
- $value = log($x);
- }catch(Exception $e){
- echo("Błąd w linii: " . $e->getLine() . ": " . $e->getMessage());
- }
- ?>
Wynik działania powyższego kodu:
Jak widać klasa Exception w PHP zajmuje się obsługą błędów, udostępniając opis błędu, miejsce jego wyrzucenia i parę innych rzeczy też. Oto konstrukcja klasy Exception:
- Exception {
- // pola klasy
- protected string $message ;
- protected int $code ;
- protected string $file ;
- protected int $line ;
- // metody
- public __construct ([ string $message = "" [, int $code = 0 [, Throwable $previous = NULL ]]] )
- final public string getMessage ( void ) // zwraca komunikat wyjątku (opis wyjątku)
- final public Exception getPrevious ( void )
- final public mixed getCode ( void ) // kod błędu (domyślnie 0)
- final public string getFile ( void ) // zwraca nazwę pliku, w którym błąd wystąpił
- final public int getLine ( void ) // zwraca linię wyrzuconego wyjątku
- final public array getTrace ( void )
- final public string getTraceAsString ( void )
- public string __toString ( void )
- final private void __clone ( void )
- }
Kod wcześniej rzuconego wyjątku przeróbmy do następującej postaci:
- <?php
- function ln($value){
- if(!$value)
- throw new Exception("Próbujesz obliczyć logarytm naturalny z zera");
- return log($value);
- }
- try{
- $val1 = ln(10);
- echo("<p>" . $val1 . "</p>");
- $val2 = ln(0);
- echo("<p>$val2</p>");
- $val3 = ln(5);
- echo("<p>$val3</p>");
- }catch(Exception $e){
- echo("Błąd w linii: " . $e->getLine() . ": " . $e->getMessage());
- }
- ?>
by zrozumieć, że linia kodu wywołania błędu zawsze będzie zwracana przez metodę getLine klasy Exception:
2.302585092994
Błąd w linii: 4: Próbujesz obliczyć logarytm naturalny z zeraMożna też tworzyć własne klasy wyjątków, np. tak:
- <?php
- class lnFromZeroException extends Exception{
- public function __construct(){
- parent::__construct("Próbujesz obliczyć logarytm naturalny z zera");
- }
- }
- function ln($value){
- if(!$value)
- throw new lnFromZeroException();
- return log($value);
- }
- try{
- $val1 = ln(10);
- echo("<p>" . $val1 . "</p>");
- $val2 = ln(0);
- echo("<p>$val2</p>");
- $val3 = ln(5);
- echo("<p>$val3</p>");
- }catch(Exception $e){
- echo("Błąd: " . $e->getLine() . ": " . $e->getMessage());
- }
- ?>

Tytuł:
PHP 8 i SQL. Programowanie dla początkujących w 43 lekcjach
Autor:
Mariusz Duka

Tytuł:
CodeIgniter 4. Zaawansowane tworzenie stron WWW w PHP
Autor:
Łukasz Sosna

Tytuł:
PHP 7 MySQL 8 i Maria DB Praktyczny podręcznik
Autor:
Steve Prettyman, Adrian W. West

Tytuł:
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie V
Autor:
Larry Ullman

Tytuł:
PHP 7. Algorytmy i struktury danych
Autor:
Mizanur Rahman

Tytuł:
PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty. Wydanie V
Autor:
Luke Welling, Laura Thomson

Tytuł:
PHP i jQuery. Techniki zaawansowane. Wydanie II
Autor:
Keith Wald, Jason Lengstorf

Tytuł:
Laravel 4. Podstawy tworzenia aplikacji w PHP
Autor:
Raphaël Saunier

Tytuł:
Magento. Przewodnik dla programistów PHP
Autor:
Allan MacGregor

Tytuł:
JavaScript dla programistów PHP
Autor:
Stoyan Stefanov