PHP Prøv fangsteksempel: Undtagelse & Fejlhåndteringsvejledning

Indholdsfortegnelse:

Anonim

Hvad er en undtagelse?

En fejl er et uventet programresultat, der ikke kan håndteres af selve programmet.

Fejl løses ved at rette programmet. Et eksempel på en fejl ville være en uendelig løkke, der aldrig stopper med at udføre.

En undtagelse er uventet programresultat, der kan håndteres af selve programmet.

Eksempler på undtagelser inkluderer forsøg på at åbne en fil, der ikke findes.

Denne undtagelse kan håndteres ved enten at oprette filen eller præsentere brugeren for en mulighed for at søge efter filen.

I denne vejledning lærer du-

  • Hvorfor håndtere undtagelse?
  • PHP Fejlhåndtering
  • Fejlhåndteringseksempler
  • Forskel mellem fejl og undtagelse
  • Flere undtagelser
  • Test af koden

Hvorfor håndtere undtagelse?

  • Undgå uventede resultater på vores sider, som kan være meget irriterende eller irriterende for vores slutbrugere
  • Forbedre vores applikations sikkerhed ved ikke at udsætte oplysninger, som ondsindede brugere kan bruge til at angribe vores applikationer
  • Php-undtagelser bruges til at ændre et programs normale flow, hvis der opstår en forudsigelig fejl.

PHP Fejlhåndtering

Når der opstår en fejl, afhængigt af dine konfigurationsindstillinger, viser PHP fejlmeddelelsen i webbrowseren med oplysninger om den fejl, der opstod.

PHP tilbyder en række måder at håndtere fejl på.

Vi skal se på tre (3) almindeligt anvendte metoder;

  1. Die-sætninger - die-funktionen kombinerer ekko- og exit-funktionen i en. Det er meget nyttigt, når vi vil sende en besked og stoppe udførelsen af ​​scriptet, når der opstår en fejl.
  2. Tilpassede fejlhåndterere - disse er brugerdefinerede funktioner, der kaldes, hver gang der opstår en fejl.
  3. PHP-fejlrapportering - fejlmeddelelsen afhængigt af dine PHP-rapporteringsindstillinger. Denne metode er meget nyttig i udviklingsmiljø, når du ikke har nogen idé om, hvad der forårsagede fejlen. De viste oplysninger kan hjælpe dig med at fejle din applikation.

Fejlhåndteringseksempler

Lad os nu se på nogle enkle eksempler med fejlhåndteringsrutiner.

Lad os antage, at vi har udviklet et program, der bruger tekstfiler til at gemme data. Vi vil muligvis kontrollere for filens eksistens, før vi forsøger at læse data fra den.

Koden nedenfor implementerer ovenstående eksempel.

Forudsat at du gemte filen simple_error.php i phptuts-mappen, skal du åbne URL'en http: //localhost/phptuts/simple_error.php

Du får følgende resultater

Som du kan se fra ovenstående resultater, får det vores applikation til at se uprofessionelt ud og kan være irriterende for brugeren.

Vi vil ændre ovenstående kode og skrive en fejlhåndtering til applikationen

Forudsat at du har gemt ovenstående kode som error_handling.php, skal du åbne URL'en http: //localhost/phptuts/error_handling.php

Bemærk: det er en god sikkerhedspraksis at vise en besked som vist ovenfor i stedet for at vise beskeden som "Fil ikke fundet".

Lad os se på et andet eksempel, der bruger en brugerdefineret fejlhåndterer.

Den brugerdefinerede fejlhåndterer indstilles som standard PHP-fejlhåndteringsfunktion og viser dybest set et fejlnummer og en meddelelse.

Koden nedenfor illustrerer implementeringen af ​​ovenstående eksempel

Åbn URL'en http: //localhost/phptuts/custom_error_handler.php, du får følgende resultater

.

Som du kan se fra ovenstående eksempel, er brugerdefinerede fejlhåndterere effektive i den forstand, at

  • De giver os mulighed for at tilpasse fejlmeddelelserne.
  • Den brugerdefinerede fejlhåndterer kan også omfatte fejllogning i en fil / database, e-mail til udvikleren osv.

Lad os nu se på den tredje type fejlhåndtering. Vi bruger den indbyggede PHP-funktion error_reporting-funktion. Den har følgende grundlæggende syntaks

HER,

  • “Error_reporting” er PHP-fejlrapporteringsfunktionen
  • “$ Rapporteringsniveau” er valgfrit, kan bruges til at indstille rapporteringsniveauet. Hvis der ikke er angivet noget rapporteringsniveau, bruger PHP standardfejlrapporteringsniveauet som angivet i php.ini-filen.
Rapporteringsniveau Beskrivelse Eksempel
E_ADVARSEL Viser kun advarselsmeddelelser. Stopper ikke udførelsen af ​​scriptet fejlrapportering (E_ADVARSEL);
E_NOTICE Viser meddelelser, der kan forekomme under normal udførelse af et program, eller som kan være en fejl. fejlrapportering (E_ BEMÆRKNING)
E_USER_ERROR Viser brugergenererede fejl, dvs. brugerdefineret fejlhåndtering fejl_rapportering (E_ USER_ERROR);
E_USER_WARNING Viser brugergenererede advarselsmeddelelser fejl_rapportering (E_USER_WARNING);
E_USER_NOTICE Viser brugergenererede meddelelser fejlrapportering (E_USER_NOTICE);
E_RECOVERABLE_ERROR Viser fejl, der ikke er fatale, og som kan håndteres ved hjælp af brugerdefinerede fejlhåndterere fejlrapportering (E_RECOVERABLE_ERROR);
E_ALL Viser alle fejl og advarsler fejl_rapportering (E_ ALL);

Forskel mellem fejl og undtagelse

  • Undtagelser kastes og er beregnet til at blive fanget, mens fejl generelt er uoprettelige.
  • Undtagelser håndteres på en objektorienteret måde.

    Dette betyder, når en undtagelse kastes; der oprettes et undtagelsesobjekt, der indeholder undtagelsesoplysningerne.

Nedenstående tabel viser undtagelsesobjektmetoderne

Metode Beskrivelse Eksempel
getMessage () Viser undtagelsens meddelelse
getMessage();?>
få kode() Viser den numeriske kode, der repræsenterer undtagelsen
getCode();?>
getFile () Viser filnavnet og stien, hvor undtagelsen opstod
getFile();?>
getLine () Viser linjenummeret, hvor undtagelsen opstod
getLine();?>
getTrace () Viser en matrix af backtrace før undtagelsen
getTrace());?>
getPrevious () Viser den forrige undtagelse før den aktuelle
getPrevious();?>
getTraceAsString () Viser undtagelsens backtrace som en streng i stedet for en matrix
getTraceAsString();?>
__toString () Viser hele undtagelsen som en streng
__toString();?>

Nedenfor er den grundlæggende syntaks til at kaste en undtagelse.

HER,

  • "Kast" er det nøgleord, der bruges til at kaste undtagelsen
  • "Ny undtagelse (...)" opretter et undtagelsesobjekt og sender "Dette er et undtagelseseksempel" streng som meddelelsesparameter.

Ovenstående kode udsender følgende meddelelse.

Vi skal nu se på et eksempel, der implementerer undtagelser for kast og fangst.

Vi ændrer ovenstående eksempel og inkluderer prøve, kast og fangst.

Den har følgende grundlæggende syntaks.

HER,

  • "Prøv {...}" er den blok af kode, der skal udføres, der potentielt kan skabe en undtagelse
  • “Fangst (undtagelse $ e) {...}” er den blok med kode, der fanger den kastede undtagelse og tildeler undtagelsesobjektet til variablen $ e.

Koden nedenfor viser det grundlæggende undtagelseseksempel med undtagelsen prøve, kast og fangst implementeret.

Programmet kaster bevidst en undtagelse, som det derefter fanger.

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

Åbn URL'en http: //localhost/phptuts/exception_handling.php Du får følgende resultater.

Det er også muligt at oprette flere undtagelser for en php-prøve-sætning afhængigt af typen af ​​undtagelse, der kastes.

Se artiklen om MySQL, PHP-dataadgang

... til eksempler på implementering af flere undtagelser

Flere undtagelser

Flere undtagelser brug flere prøvefangstblokke til at håndtere de kastede undtagelser. Flere undtagelser er nyttige, når;

  • Du vil have vist en tilpasset besked afhængigt af den undtagelse, der kastes
  • Du vil udføre en unik operation afhængigt af den undtagelse, der kastes

Runddiagrammet nedenfor illustrerer, hvordan flere undtagelser fungerer

Lad os se på et eksempel, der bruger flere undtagelser.

Vi ændrer koden, der dividerer et tal med det bestået i nævneren.

Vi forventer, at der forekommer to typer undtagelser;

  • Opdeling med nul
  • Opdel med et negativt tal

For enkelheds skyld viser vi kun undtagelsestypen i vores fangstblokke.

PHP indbygget i Exception-klasse bruges til at kaste undtagelser.

Vi opretter to klasser, der udvider undtagelsesklassen og bruger dem til at kaste undtagelser.

Koden nedenfor viser implementeringen.

Test af koden

Vi antager, at du har gemt multiple_exceptions.php i phptuts-mappen.

Gå til URL'en http: //localhost/phptuts/multiple_exceptions.php

Skift tilbage til PHP-filen og send -1 som parameter som vist i følgende diagram.

Gå til URL'en http: //localhost/phptuts/multiple_exceptions.php .

Hvilke resultater får du? Pass 3 som parameter.

Hvilke resultater får du?

Resumé

  • Fejl er uventede resultater produceret af PHP-kode
  • Fejlhåndtering forbedrer applikationens ydeevne
  • PHP har indbyggede funktioner, der kan bruges til at tilpasse den måde, hvorpå PHP rapporterer fejl
  • Undtagelser er som fejl, men de kan fanges ved hjælp af fangstblokken, når de smides.
  • Visning af fejlmeddelelser, der viser fejloplysninger, betragtes som en dårlig sikkerhedspraksis.