PHP Try Catch Przykład: Wyjątek & Samouczek obsługi błędów

Spisie treści:

Anonim

Co to jest wyjątek?

Błąd to nieoczekiwany wynik programu, którego sam program nie może obsłużyć.

Błędy są naprawiane przez naprawienie programu. Przykładem błędu może być nieskończona pętla, która nigdy nie przestaje działać.

Wyjątkiem jest nieoczekiwany wynik programu, który może być obsłużony przez sam program.

Przykłady wyjątków obejmują próbę otwarcia pliku, który nie istnieje.

Ten wyjątek można obsłużyć, tworząc plik lub udostępniając użytkownikowi opcję wyszukiwania pliku.

W tym samouczku nauczysz się:

  • Po co obsługiwać wyjątek?
  • Obsługa błędów PHP
  • Przykłady obsługi błędów
  • Różnica między błędami a wyjątkami
  • Wiele wyjątków
  • Testowanie kodu

Po co obsługiwać wyjątek?

  • Unikaj nieoczekiwanych wyników na naszych stronach, które mogą być bardzo irytujące lub irytujące dla naszych użytkowników końcowych
  • Popraw bezpieczeństwo naszych aplikacji, nie ujawniając informacji, które złośliwi użytkownicy mogą wykorzystać do ataku na nasze aplikacje
  • Wyjątki PHP służą do zmiany normalnego przepływu programu w przypadku wystąpienia przewidywalnego błędu.

Obsługa błędów PHP

W przypadku wystąpienia błędu, w zależności od ustawień konfiguracyjnych, PHP wyświetla komunikat o błędzie w przeglądarce internetowej z informacją o błędzie, który wystąpił.

PHP oferuje wiele sposobów obsługi błędów.

Przyjrzymy się trzem (3) powszechnie używanym metodom;

  1. Instrukcje Die - funkcja die łączy w sobie funkcję echa i exit. Jest to bardzo przydatne, gdy chcemy wyprowadzić wiadomość i zatrzymać wykonanie skryptu, gdy wystąpi błąd.
  2. Niestandardowe procedury obsługi błędów - są to funkcje zdefiniowane przez użytkownika, które są wywoływane za każdym razem, gdy wystąpi błąd.
  3. Raportowanie błędów PHP - komunikat o błędzie zależny od ustawień raportowania błędów PHP. Ta metoda jest bardzo przydatna w środowisku programistycznym, gdy nie masz pojęcia, co spowodowało błąd. Wyświetlane informacje mogą pomóc w debugowaniu aplikacji.

Przykłady obsługi błędów

Spójrzmy teraz na kilka prostych przykładów z procedurami obsługi błędów.

Załóżmy, że opracowaliśmy aplikację, która wykorzystuje pliki tekstowe do przechowywania danych. Możemy chcieć sprawdzić istnienie pliku, zanim spróbujemy odczytać z niego dane.

Poniższy kod implementuje powyższy przykład.

Zakładając, że zapisałeś plik simple_error.php w folderze phptuts, otwórz adres URL http: //localhost/phptuts/simple_error.php

Otrzymasz następujące wyniki

Jak widać z powyższych wyników, sprawia to, że nasza aplikacja wygląda nieprofesjonalnie i może być irytująca dla użytkownika.

Zmodyfikujemy powyższy kod i napiszemy procedurę obsługi błędów dla aplikacji

Zakładając, że zapisałeś powyższy kod jako error_handling.php, otwórz adres URL http: //localhost/phptuts/error_handling.php

Uwaga: dobrą praktyką w zakresie bezpieczeństwa jest wyświetlanie komunikatu tak, jak pokazano powyżej, zamiast wyświetlać komunikat typu „Nie znaleziono pliku”.

Spójrzmy na inny przykład, w którym zastosowano niestandardową procedurę obsługi błędów.

Niestandardowy program obsługi błędów zostanie ustawiony jako domyślna funkcja obsługi błędów PHP i zasadniczo wyświetli numer błędu i komunikat.

Poniższy kod ilustruje implementację powyższego przykładu

Otwórz adres URL http: //localhost/phptuts/custom_error_handler.php , a otrzymasz następujące wyniki

.

Jak widać na powyższym przykładzie, niestandardowe programy obsługi błędów są w tym sensie potężne

  • Pozwalają nam dostosować komunikaty o błędach.
  • Niestandardowa obsługa błędów może również obejmować logowanie błędów do pliku / bazy danych, wysyłanie e-maili do programisty itp.

Przyjrzyjmy się teraz trzeciemu typowi obsługi błędów. Będziemy używać funkcji raportowania błędów w PHP. Ma następującą podstawową składnię

TUTAJ,

  • „Error_reporting” to funkcja raportowania błędów PHP
  • „$ Report_level” jest opcjonalne, można go użyć do ustawienia poziomu raportowania. Jeśli nie określono poziomu raportowania, PHP użyje domyślnego poziomu raportowania błędów określonego w pliku php.ini.
Poziom raportowania Opis Przykład
E_WARNING Wyświetla tylko komunikaty ostrzegawcze. Nie wstrzymuje wykonywania skryptu error_reporting (E_WARNING);
E_NOTICE Wyświetla powiadomienia, które mogą wystąpić podczas normalnego wykonywania programu lub mogą być błędem. error_reporting (E_ NOTICE);
E_USER_ERROR Wyświetla błędy wygenerowane przez użytkownika, tj. Niestandardową obsługę błędów error_reporting (E_ USER_ERROR);
E_USER_WARNING Wyświetla komunikaty ostrzegawcze wygenerowane przez użytkownika error_reporting (E_USER_WARNING);
E_USER_NOTICE Wyświetla powiadomienia wygenerowane przez użytkownika error_reporting (E_USER_NOTICE);
E_RECOVERABLE_ERROR Wyświetla błędy, które nie są krytyczne i można je obsłużyć za pomocą niestandardowych programów obsługi błędów error_reporting (E_RECOVERABLE_ERROR);
E_ALL Wyświetla wszystkie błędy i ostrzeżenia error_reporting (E_ ALL);

Różnica między błędami a wyjątkami

  • Wyjątki są generowane i mają zostać przechwycone, podczas gdy błędy są generalnie nie do naprawienia.
  • Wyjątki są obsługiwane w sposób obiektowy.

    Oznacza to, że zostanie zgłoszony wyjątek; tworzony jest obiekt wyjątku zawierający szczegóły wyjątku.

Poniższa tabela przedstawia metody obiektów wyjątków

metoda Opis Przykład
getMessage () Wyświetla komunikat o wyjątku
getMessage();?>
Zdobądź szyfr() Wyświetla kod numeryczny reprezentujący wyjątek
getCode();?>
dostać plik() Wyświetla nazwę pliku i ścieżkę, w której wystąpił wyjątek
getFile();?>
getLine () Wyświetla numer wiersza, w którym wystąpił wyjątek
getLine();?>
getTrace () Wyświetla tablicę śledzenia wstecznego przed wyjątkiem
getTrace());?>
getPrevious () Wyświetla poprzedni wyjątek przed bieżącym
getPrevious();?>
getTraceAsString () Wyświetla ślad wyjątku jako ciąg znaków zamiast tablicy
getTraceAsString();?>
__toString () Wyświetla cały wyjątek jako ciąg
__toString();?>

Poniżej znajduje się podstawowa składnia do zgłaszania wyjątku.

TUTAJ,

  • „Throw” to słowo kluczowe używane do zgłaszania wyjątku
  • „Nowy wyjątek (…)” tworzy obiekt wyjątku i przekazuje jako parametr komunikatu „To jest przykład wyjątku”.

Powyższy kod generuje następujący komunikat.

Przyjrzymy się teraz przykładowi, który implementuje wyjątki rzutowania i przechwytywania.

Zmodyfikujemy powyższy przykład i uwzględnimy próbę, rzut i złapanie.

Ma następującą podstawową składnię.

TUTAJ,

  • „Try {…}” to blok kodu do wykonania, który może potencjalnie zgłosić wyjątek
  • „Catch (Exception $ e) {…}” to blok kodu, który przechwytuje zgłoszony wyjątek i przypisuje obiekt wyjątku do zmiennej $ e.

Poniższy kod przedstawia podstawowy przykład wyjątku z zaimplementowanym wyjątkiem try, throw i catch.

Program celowo zgłasza wyjątek, który następnie przechwytuje.

getMessage();echo "";echo "getCode(): " . $e->getCode();echo "";echo "__toString(): " . $e->__toString();}?>

Otwórz adres URL http: //localhost/phptuts/exception_handling.php Otrzymasz następujące wyniki.

Możliwe jest również utworzenie wielu wyjątków dla jednej instrukcji php try w zależności od typu zgłoszonego wyjątku.

Zobacz artykuł o MySQL, dostęp do danych PHP

… Aby zapoznać się z przykładami implementacji wielu wyjątków

Wiele wyjątków

Wiele wyjątków używa wielu bloków try catch do obsługi zgłoszonych wyjątków. Wiele wyjątków jest przydatnych, gdy;

  • Chcesz wyświetlić dostosowany komunikat w zależności od zgłoszonego wyjątku
  • Chcesz wykonać unikatową operację w zależności od zgłoszonego wyjątku

Poniższy schemat blokowy ilustruje sposób działania wielu wyjątków

Spójrzmy na przykład, w którym zastosowano wiele wyjątków.

Zmodyfikujemy kod, który dzieli liczbę przez przekazany mianownik.

Spodziewamy się wystąpienia dwóch rodzajów wyjątków;

  • Dzielenie przez zero
  • Dzielenie przez liczbę ujemną

Dla uproszczenia będziemy wyświetlać typ wyjątku tylko w naszych blokach catch.

Do zgłaszania wyjątków służy PHP wbudowane w klasę Exception.

Stworzymy dwie klasy, które rozszerzają klasę wyjątków i używamy ich do zgłaszania wyjątków.

Poniższy kod przedstawia implementację.

Testowanie kodu

Zakładamy, że zapisałeś plik multiple_exceptions.php w folderze phptuts.

Przejdź do adresu URL http: //localhost/phptuts/multiple_exceptions.php

Przełącz się z powrotem do pliku PHP i podaj -1 jako parametr, jak pokazano na poniższym diagramie.

Przejdź do adresu URL http: //localhost/phptuts/multiple_exceptions.php .

Jakie otrzymujesz wyniki? Przekaż 3 jako parametr.

Jakie otrzymujesz wyniki?

Podsumowanie

  • Błędy to nieoczekiwane wyniki generowane przez kod PHP
  • Obsługa błędów poprawia wydajność aplikacji
  • PHP ma wbudowane funkcje, których można użyć do dostosowania sposobu, w jaki PHP zgłasza błędy
  • Wyjątki są podobne do błędów, ale po rzuceniu można je przechwycić za pomocą bloku catch.
  • Wyświetlanie komunikatów o błędach zawierających informacje o błędach jest uważane za złą praktykę w zakresie bezpieczeństwa.