Příklad PHP Try Catch: Výjimka & Výukový program pro zpracování chyb

Obsah:

Anonim

Co je to výjimka?

Chyba je neočekávaný výsledek programu, který sám program nezvládne.

Chyby jsou vyřešeny opravou programu. Příkladem chyby by byla nekonečná smyčka, která se nikdy nezastaví.

Výjimkou je neočekávaný výsledek programu, který lze zpracovat samotným programem.

Mezi příklady výjimek patří pokus o otevření souboru, který neexistuje.

Tuto výjimku lze vyřešit buď vytvořením souboru, nebo nabídnutím možnosti vyhledávání souboru uživateli.

V tomto výukovém programu se naučíte

  • Proč zpracovávat výjimky?
  • Zpracování chyb PHP
  • Příklady zpracování chyb
  • Rozdíl mezi chybami a výjimkou
  • Několik výjimek
  • Testování kódu

Proč zpracovávat výjimky?

  • Vyhněte se neočekávaným výsledkům na našich stránkách, které mohou být pro naše koncové uživatele velmi nepříjemné nebo dráždivé
  • Zlepšete zabezpečení našich aplikací tím, že nevystavujete informace, které mohou uživatelé se zlými úmysly použít k útoku na naše aplikace
  • Výjimky Php se používají ke změně normálního toku programu, pokud dojde k jakékoli předvídatelné chybě.

Zpracování chyb PHP

Dojde-li k chybě, v závislosti na vašem nastavení konfigurace zobrazí PHP ve webovém prohlížeči chybovou zprávu s informacemi o chybě, ke které došlo.

PHP nabízí řadu způsobů řešení chyb.

Podíváme se na tři (3) běžně používané metody;

  1. Příkazy Die - funkce Die kombinuje funkci echo a exit v jednom. Je to velmi užitečné, když chceme odeslat zprávu a zastavit spuštění skriptu, když dojde k chybě.
  2. Vlastní obslužné rutiny chyb - jedná se o uživatelem definované funkce, které se volají vždy, když dojde k chybě.
  3. Hlášení chyb PHP - chybová zpráva v závislosti na vašem nastavení hlášení chyb PHP. Tato metoda je velmi užitečná ve vývojovém prostředí, když nemáte tušení, co způsobilo chybu. Zobrazené informace vám mohou pomoci při ladění aplikace.

Příklady zpracování chyb

Podívejme se nyní na několik jednoduchých příkladů s rutinami zpracování chyb.

Předpokládejme, že jsme vyvinuli aplikaci, která k ukládání dat používá textové soubory. Možná bychom chtěli zkontrolovat existenci souboru, než se z něj pokusíme načíst data.

Níže uvedený kód implementuje výše uvedený příklad.

Za předpokladu, že jste uložili soubor simple_error.php do složky phptuts, otevřete URL http: //localhost/phptuts/simple_error.php

Získáte následující výsledky

Jak vidíte z výše uvedených výsledků, naše aplikace vypadá neprofesionálně a může být pro uživatele nepříjemná.

Upravíme výše uvedený kód a napíšeme obslužnou rutinu chyby pro aplikaci

Za předpokladu, že jste uložili výše uvedený kód jako error_handling.php, otevřete URL http: //localhost/phptuts/error_handling.php

Poznámka: Je dobrým bezpečnostním postupem zobrazovat zprávu jako ta, která je uvedena výše, místo zobrazení zprávy jako „Soubor nebyl nalezen“.

Podívejme se na další příklad, který používá vlastní obslužný program chyb.

Vlastní obslužná rutina chyb bude nastavena jako výchozí funkce zpracování chyb PHP a bude v zásadě zobrazovat číslo chyby a zprávu.

Níže uvedený kód ilustruje implementaci výše uvedeného příkladu

Otevřete URL http: //localhost/phptuts/custom_error_handler.php získáte následující výsledky

.

Jak můžete vidět z výše uvedeného příkladu, vlastní obslužné rutiny chyb jsou účinné v tom smyslu

  • Umožňují nám přizpůsobit chybové zprávy.
  • Vlastní obslužná rutina chyb může také zahrnovat protokolování chyb v souboru / databázi, zasílání e-mailů vývojářům atd.

Pojďme se nyní podívat na třetí typ zpracování chyb. Budeme používat funkci PHP zabudovanou ve funkci error_reporting. Má následující základní syntaxi

TADY,

  • „Error_reporting“ je funkce hlášení chyb PHP
  • „$ Reporting_level“ je volitelný, lze jej použít k nastavení úrovně hlášení. Pokud nebyla zadána žádná úroveň hlášení, použije PHP výchozí úroveň hlášení chyb uvedenou v souboru php.ini.
Úroveň hlášení Popis Příklad
VAROVÁNÍ Zobrazuje pouze varovné zprávy. Nezastaví provádění skriptu error_reporting (E_WARNING);
E_NOTICE Zobrazuje upozornění, která mohou nastat během normálního spuštění programu nebo mohou představovat chybu. error_reporting (E_ NOTICE);
E_USER_ERROR Zobrazí chyby generované uživatelem, tj. Vlastní obslužný program chyb error_reporting (E_ USER_ERROR);
E_USER_WARNING Zobrazuje varovné zprávy generované uživatelem error_reporting (E_USER_WARNING);
E_USER_NOTICE Zobrazuje upozornění generovaná uživateli error_reporting (E_USER_NOTICE);
E_RECOVERABLE_ERROR Zobrazí chybu, která není fatální a lze ji zpracovat pomocí vlastních obslužných rutin chyb error_reporting (E_RECOVERABLE_ERROR);
E_ALL Zobrazí všechny chyby a varování error_reporting (E_ ALL);

Rozdíl mezi chybami a výjimkou

  • Výjimky jsou vyvolány a mají být zachyceny, zatímco chyby jsou obecně neopravitelné.
  • Výjimky jsou zpracovávány objektově orientovaným způsobem.

    To znamená, když je vyvolána výjimka; je vytvořen objekt výjimky, který obsahuje podrobnosti o výjimce.

Níže uvedená tabulka ukazuje metody objektu výjimky

Metoda Popis Příklad
getMessage () Zobrazí zprávu o výjimce
getMessage();?>
získat kód() Zobrazí číselný kód, který představuje výjimku
getCode();?>
getFile () Zobrazí název souboru a cestu, kde došlo k výjimce
getFile();?>
getLine () Zobrazí číslo řádku, kde došlo k výjimce
getLine();?>
getTrace () Zobrazí pole zpětného sledování před výjimkou
getTrace());?>
getPrevious () Zobrazí předchozí výjimku před aktuální
getPrevious();?>
getTraceAsString () Zobrazí backtrace výjimky jako řetězec namísto pole
getTraceAsString();?>
__toString () Zobrazí celou výjimku jako řetězec
__toString();?>

Níže je uvedena základní syntaxe pro vyvolání výjimky.

TADY,

  • „Throw“ je klíčové slovo použité k vyvolání výjimky
  • „Nová výjimka (…)“ vytvoří objekt výjimky a předá řetězec „Toto je příklad výjimky“ jako parametr zprávy.

Výše uvedený kód vydává následující zprávu.

Nyní se podíváme na příklad, který implementuje výjimky throw a catch.

Výše uvedený příklad upravíme a zahrneme pokus, hod a chycení.

Má následující základní syntaxi.

TADY,

  • „Try {…}“ je blok kódu, který má být spuštěn a který by mohl potenciálně vyvolat výjimku
  • „Catch (Exception $ e) {…}“ je blok kódu, který zachytí vyvolanou výjimku a přiřadí objekt výjimky proměnné $ e.

Níže uvedený kód ukazuje příklad základní výjimky s implementovanou výjimkou try, throw a catch.

Program záměrně vyvolá výjimku, kterou pak zachytí.

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

Otevřete URL http: //localhost/phptuts/exception_handling.php Získáte následující výsledky.

Je také možné vytvořit více výjimek pro jeden příkaz php try v závislosti na typu vyvolané výjimky.

Přečtěte si článek o přístupu k datům MySQL, PHP

… Pro příklady implementace několika výjimek

Několik výjimek

Vícenásobná výjimka slouží ke zpracování vyvolaných výjimek pomocí více bloků try catch. Několik výjimek je užitečné, když;

  • Chcete zobrazit přizpůsobenou zprávu v závislosti na vyvolané výjimce
  • Chcete provést jedinečnou operaci v závislosti na vyvolané výjimce

Vývojový diagram níže ukazuje, jak funguje několik výjimek

Podívejme se na příklad, který používá několik výjimek.

Upravíme kód, který vydělí číslo předaným ve jmenovateli.

Očekáváme, že nastanou dva typy výjimek;

  • Dělení nulou
  • Dělení záporným číslem

Kvůli zjednodušení zobrazíme typ výjimky pouze v našich blocích úlovků.

PHP zabudované do třídy Exception se používá k vyvolání výjimek.

Vytvoříme dvě třídy, které rozšíří třídu výjimek a použijí je k vyvolání výjimek.

Níže uvedený kód ukazuje implementaci.

Testování kódu

Předpokládáme, že jste uložili soubor multiple_exceptions.php do složky phptuts.

Přejděte na adresu URL http: //localhost/phptuts/multiple_exceptions.php

Přepněte zpět na soubor PHP a předejte -1 jako parametr, jak je znázorněno v následujícím diagramu.

Přejděte na adresu URL http: //localhost/phptuts/multiple_exceptions.php .

Jaké výsledky získáte? Předejte 3 jako parametr.

Jaké výsledky získáte?

souhrn

  • Chyby jsou neočekávané výsledky produkované kódem PHP
  • Zpracování chyb zlepšuje výkon aplikace
  • PHP má zabudované funkce, které lze použít k přizpůsobení způsobu, jakým PHP hlásí chyby
  • Výjimky jsou jako chyby, ale při vyvolání je lze zachytit pomocí bloku catch.
  • Zobrazování chybových zpráv, které zobrazují informace o chybě, se považuje za špatný postup zabezpečení.