PHP Try Catch Príklad: Výnimka & Výukový program na riešenie chýb

Obsah:

Anonim

Čo je to výnimka?

Chyba je neočakávaný výsledok programu, ktorý samotný program nedokáže spracovať.

Chyby sa vyriešia opravením programu. Príkladom chyby by mohla byť nekonečná slučka, ktorá sa nikdy neprestane vykonávať.

Výnimkou je neočakávaný výsledok programu, ktorý zvládne samotný program.

Medzi príklady výnimiek patrí pokus o otvorenie súboru, ktorý neexistuje.

Túto výnimku je možné vyriešiť vytvorením súboru alebo poskytnutím možnosti vyhľadať súbor používateľovi.

V tomto návode sa naučíte

  • Prečo vybavovať výnimky?
  • Spracovanie chýb PHP
  • Príklady spracovania chýb
  • Rozdiel medzi chybami a výnimkou
  • Viaceré výnimky
  • Testovanie kódu

Prečo vybavovať výnimky?

  • Zabráňte neočakávaným výsledkom na našich stránkach, ktoré môžu byť pre našich koncových používateľov veľmi nepríjemné alebo dráždivé
  • Zlepšite bezpečnosť našich aplikácií tým, že neodhaľujete informácie, ktoré môžu používatelia so zlým úmyslom použiť na napadnutie našich aplikácií
  • Výnimky Php sa používajú na zmenu normálneho toku programu, ak dôjde k akejkoľvek predvídateľnej chybe.

Spracovanie chýb PHP

Ak sa vyskytne chyba, v závislosti na vašom konfiguračnom nastavení zobrazí PHP chybové hlásenie vo webovom prehliadači s informáciami o chybe, ktorá sa vyskytla.

PHP ponúka množstvo spôsobov riešenia chýb.

Pozrime sa na tri (3) bežne používané metódy;

  1. Príkazy die - funkcia die kombinuje funkciu echo a exit v jednom. Je to veľmi užitočné, keď chceme odoslať správu a zastaviť vykonávanie skriptu, keď sa vyskytne chyba.
  2. Vlastné obslužné rutiny chýb - sú to užívateľom definované funkcie, ktoré sa volajú vždy, keď sa vyskytne chyba.
  3. Hlásenie chýb PHP - chybové hlásenie v závislosti od vašich nastavení hlásenia chýb PHP. Táto metóda je veľmi užitočná vo vývojovom prostredí, keď nemáte tušenie, čo spôsobilo chybu. Zobrazené informácie vám môžu pomôcť pri ladení vašej aplikácie.

Príklady spracovania chýb

Pozrime sa teraz na niekoľko jednoduchých príkladov s rutinami spracovania chýb.

Predpokladajme, že sme vyvinuli aplikáciu, ktorá na ukladanie údajov používa textové súbory. Možno by sme mali skontrolovať existenciu súboru skôr, ako sa z neho pokúsime načítať údaje.

Nasledujúci kód implementuje vyššie uvedený príklad.

Za predpokladu, že ste uložili súbor simple_error.php do priečinka phptuts, otvorte URL http: //localhost/phptuts/simple_error.php

Získate nasledujúce výsledky

Ako môžete vidieť z vyššie uvedených výsledkov, robí našu aplikáciu neprofesionálnou a môže byť pre používateľa nepríjemná.

Vyššie uvedený kód upravíme a pre aplikáciu napíšeme obslužný program chýb

Za predpokladu, že ste uložili vyššie uvedený kód ako error_handling.php, otvorte URL http: //localhost/phptuts/error_handling.php

Poznámka: Dobrým bezpečnostným postupom je zobraziť správu tak, ako je uvedená vyššie, namiesto toho, aby sa správa zobrazovala ako „Súbor sa nenašiel“.

Pozrime sa na ďalší príklad, ktorý používa vlastný obslužný program chýb.

Vlastný obslužný program chýb bude nastavený ako predvolená funkcia spracovania chýb PHP a v zásade bude zobrazovať číslo chyby a správu.

Nasledujúci kód ilustruje implementáciu vyššie uvedeného príkladu

Otvorte URL http: //localhost/phptuts/custom_error_handler.php získate nasledujúce výsledky

.

Ako vidíte z vyššie uvedeného príkladu, vlastné obslužné rutiny chýb sú účinné v tom zmysle

  • Umožňujú nám prispôsobiť chybové správy.
  • Vlastný obslužný program chýb môže obsahovať aj protokolovanie chýb do súborov / databáz, odosielanie e-mailov vývojárom atď.

Pozrime sa teraz na tretí typ spracovania chýb. Budeme používať zabudovanú funkciu PHP error_reporting. Má nasledujúcu základnú syntax

TU,

  • “Error_reporting” je funkcia hlásenia chýb PHP
  • „$ Reporting_level“ je voliteľný, je možné ho použiť na nastavenie úrovne hlásenia. Ak nebola zadaná žiadna úroveň hlásenia, použije PHP predvolenú úroveň hlásenia chýb uvedenú v súbore php.ini.
Úroveň prehľadu Popis Príklad
VAROVANIE Zobrazuje iba varovné správy. Nezastavuje vykonávanie skriptu error_reporting (E_WARNING);
E_NOTICE Zobrazuje oznámenia, ktoré sa môžu vyskytnúť počas normálneho vykonávania programu alebo môžu predstavovať chybu. error_reporting (E_ NOTICE);
E_USER_ERROR Zobrazuje chyby generované používateľom, tj vlastný obslužný program chýb error_reporting (E_ USER_ERROR);
E_USER_WARNING Zobrazuje varovné správy generované používateľom error_reporting (E_USER_WARNING);
E_USER_NOTICE Zobrazuje oznámenia generované používateľom error_reporting (E_USER_NOTICE);
E_RECOVERABLE_ERROR Zobrazuje chyby, ktoré nie sú fatálne a dajú sa vyriešiť pomocou vlastných spracovávačov chýb error_reporting (E_RECOVERABLE_ERROR);
E_ALL Zobrazuje všetky chyby a varovania error_reporting (E_ ALL);

Rozdiel medzi chybami a výnimkou

  • Vyvolávajú sa výnimky, ktoré sa majú chytiť, zatiaľ čo chyby sú spravidla neopraviteľné.
  • Výnimky sú riešené objektovo orientovaným spôsobom.

    To znamená, keď je vyvolaná výnimka; vytvorí sa objekt výnimky, ktorý obsahuje podrobnosti o výnimke.

Nasledujúca tabuľka zobrazuje metódy objektov výnimiek

Metóda Popis Príklad
getMessage () Zobrazí správu o výnimke
getMessage();?>
získať kód() Zobrazí číselný kód, ktorý predstavuje výnimku
getCode();?>
getFile () Zobrazí názov súboru a cestu, kde sa vyskytla výnimka
getFile();?>
getLine () Zobrazí číslo riadku, kde sa vyskytla výnimka
getLine();?>
getTrace () Zobrazí pole spätného sledovania pred výnimkou
getTrace());?>
getPrevious () Zobrazí predchádzajúcu výnimku pred aktuálnou
getPrevious();?>
getTraceAsString () Zobrazí spätný chod výnimky ako reťazec namiesto poľa
getTraceAsString();?>
__natiahnuť() Celú výnimku zobrazí ako reťazec
__toString();?>

Nižšie je uvedená základná syntax pre udelenie výnimky.

TU,

  • „Throw“ je kľúčové slovo použité na vyvolanie výnimky
  • „Nová výnimka (...)“ vytvorí objekt výnimky a ako parameter správy odovzdá reťazec „Toto je príklad výnimky“.

Vyššie uvedený kód vydáva nasledujúcu správu.

Teraz sa pozrieme na príklad, ktorý implementuje výnimky hodu a úlovku.

Vyššie uvedený príklad upravíme a zahrnieme pokus, hod a chytenie.

Má nasledujúcu základnú syntax.

TU,

  • „Try {...}“ je blok kódu, ktorý sa má vykonať a ktorý by mohol potenciálne vyvolať výnimku
  • „Catch (Výnimka $ e) {...}“ je blok kódu, ktorý zachytí vyvolanú výnimku a priradí objekt výnimky k premennej $ e.

Nasledujúci kód zobrazuje príklad základnej výnimky s implementovanou výnimkou pokusu, hodenia a chytenia.

Program zámerne hodí výnimku, ktorú potom chytí.

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

Otvorte URL http: //localhost/phptuts/exception_handling.php Získate nasledujúce výsledky.

Je tiež možné vytvoriť viac výnimiek pre jeden príkaz php try v závislosti od typu vyvolanej výnimky.

Prečítajte si článok o prístupe k údajom MySQL, PHP

… Pre príklady implementácie viacerých výnimiek

Viaceré výnimky

Viaceré výnimky používajú na spracovanie vyhodených výnimiek viac blokov try catch. Viaceré výnimky sú užitočné, keď;

  • Chcete zobraziť prispôsobenú správu v závislosti od vyvolanej výnimky
  • Chcete vykonať jedinečnú operáciu v závislosti od vyvolanej výnimky

Vývojový diagram uvedený nižšie ukazuje, ako funguje niekoľko výnimiek

Pozrime sa na príklad, ktorý používa viac výnimiek.

Upravíme kód, ktorý vydelí číslo číslom odovzdaným v menovateli.

Očakávame, že nastanú dva typy výnimiek;

  • Delenie nulou
  • Delenie záporným číslom

Kvôli jednoduchosti zobrazíme typ výnimky iba v našich blokoch úlovkov.

Na zabudovanie výnimiek sa používa PHP zabudované v triede Exception.

Vytvoríme dve triedy, ktoré rozšíria triedu výnimiek a použijú ich na vyvolanie výnimiek.

Nasledujúci kód zobrazuje implementáciu.

Testovanie kódu

Budeme predpokladať, že ste uložili súbor multiple_exceptions.php do priečinka phptuts.

Prejdite na adresu URL http: //localhost/phptuts/multiple_exceptions.php

Prepnite späť na súbor PHP a odovzdajte -1 ako parameter, ako je znázornené na nasledujúcom diagrame.

Prejdite na adresu URL http: //localhost/phptuts/multiple_exceptions.php .

Aké výsledky dosahujete? Zadajte 3 ako parameter.

Aké výsledky dosahujete?

Zhrnutie

  • Chyby sú neočakávané výsledky produkované kódom PHP
  • Spracovanie chýb zlepšuje výkon aplikácie
  • PHP má zabudované funkcie, ktoré možno použiť na prispôsobenie spôsobu, akým PHP hlási chyby
  • Výnimky sú ako chyby, ale dajú sa zachytiť pomocou bloku catch, keď sú vyhodené.
  • Zobrazenie chybových správ, ktoré zobrazujú informácie o chybe, sa považuje za zlý bezpečnostný postup.