Hvordan du bruker prøve fangstblokk i php

Hvordan du bruker prøve fangstblokk i php
Unntakshåndtering er et veldig viktig trekk ved enhver objektorientert programmering. Når noen logisk eller systemfeil ankommer etter utført kode, kalles det et unntak og teknikken som koderen kan håndtere feilene riktig kalles unntakshåndtering. Det brukes til å unngå uventede resultater fra sluttbrukerne, forbedre applikasjonssikkerheten og håndtere forhåndsdefinerte feil effektivt. Denne funksjonen støttes av PHP fra versjon 5. Prøve og å fange Blokk brukes til å håndtere unntak i objektorientert programmering. Prøve Blokk brukes til å kaste unntaket hvis det oppstår noen feil og å fange eller endelig Blokk brukes til å håndtere unntaket i PHP. Denne opplæringen vil hjelpe deg med å lære bruk av unntakshåndtering av objektorientert programmering ved å bruke PHP.

Prøv blokkering

PHP har en baseklasse som heter Unntak og unntak blir kastet fra prøve blokkerer til Unntak eller underklasse av Unntak klasse.

Syntaks:

prøve

// Hovedkode

Fangsblokk

Å fange Blokk vises etter prøve blokkere. PHP støtter flere å fange blokker for å håndtere flere unntak. Når et unntak kaster, prøver PHP å matche den første fangstblokken, så stemmer den andre fangstblokken hvis ikke stemmer med den første, og så videre.

Syntaks:

prøve

// Hovedkode

fangst (unntak $ e)

// Feilhåndteringskode

Til slutt blokkerer

Endelig kan blokkering brukes etter eller i stedet for fangstblokk i PHP, og denne blokken utføres når prøveblokk går ut. Enhver normal eller termineringskode kan legges til denne blokken etter å ha utført koden for prøveblokk.

Syntaks:

prøve

// Hovedkode

fangst (unntak $ e)

// Feilhåndteringskode

endelig

// Normal kode

Eksempel-1: Bruke prøvefangstblokk for enkel feil

Følgende eksempel viser bruk av en prøvefangstblokk for et enkelt unntak. Opprett en PHP -fil med følgende skript. Verdien av spørringsparameteren 'Num'har blitt lest og sjekket i prøveblokken. Hvis verdien er under 10, vil prøveblokken kaste et unntak i fangstblokken. Ellers vil verdien bli skrevet ut. Catch Block vil fange unntaket og skrive ut meldingen Send fra Try Block. Hvis ingen spørringsparameter passerer, vil standardverdien være 100.

// Test tallet er 10 eller mer
prøve

if (isset ($ _ få ['num']))
// Les verdien fra nettadressen
$ n = $ _get ['num'];
ellers
// angi standardverdien
$ n = 100;
hvis ($ n <10)

// Hvis unntaket kaster, vil Catch Block vise følgende feilmelding
Kast nytt unntak ("

Antallet må være 10 eller flere.

");

ellers

// utfører denne linjen hvis ingen feil vises.
ekko "

Antallet er $ n

";


// Fang unntaket fra Try Block
fangst (unntak $ e)

// Skriv ut feilmeldingen som er gitt fra Try Block
ekko $ e-> getMessage ();

?>

Produksjon:

Kjør skriptet uten noen spørringsparameter.

http: // localhost/phpcode/Trycatch1.PHP

Kjør skriptet med en spørringsparameterverdi som er mindre enn 10.

http: // localhost/phpcode/Trycatch1.PHP?Num = 5

Kjør skriptet med en spørringsparameterverdi som er større enn 10.

http: // localhost/phpcode/Trycatch1.PHP?Num = 15

Eksempel-2: Håndtering av flere feil ved å arve unntaksklasse

Lag en PHP -fil med følgende skript for å håndtere flere unntak ved å bruke flere fangstblokker. En underklasse som heter 'MyException'har blitt opprettet ved å utvide baseklassen'Unntak'For å håndtere'Ugyldig URL -feil'. Baseklassen Unntak har blitt brukt til håndtering 'Tom URL -feil'.

// erklære en underklasse MyException ved å utvide unntaksklassen
Klasse MyException utvider unntak
// angi feilmeldingen i konstruktøren
offentlig funksjon __construct ($ melding = null, $ code = 0)
$ this-> melding = $ melding;

// Vis feilmeldingen
offentlig funksjon display_error ()

ekko '

'.$ this-> melding.'er ikke en gyldig URL -adresse

';


prøve

// Angi URL -adressen ved å bruke spørringsparameter eller standardverdi
$ url = isset ($ _ get ['url'])?$ _Get ['url']: "https: // linuxhint.com ";
// sjekk URL -adressen er tom eller ikke
if ($ url == "")
// Hvis URL -adressen er tom, vil følgende feilmelding kaste
Kast nytt unntak ("

URL -adresse er tom.

");

// sjekk URL -adressene er gyldig eller ugyldig
eller hvis (!filter_var ($ url, filter_validate_url))
// Hvis URL -adressen er ugyldig, vil et unntak kaste med ugyldig URL -adresse
Kast ny MyException ($ url);

ellers

// Skriv ut melding for gyldig URL -adresse
ekko "

"".$ url."er en gyldig URL -adresse

";


// Håndter ugyldig URL -unntak
fangst (myxception $ e)
// Ring metoden for underklasse for å skrive ut feilmeldingen
ekko $ e-> display_error ();

// Håndter tom URL -unntak
fangst (unntak $ e)

// Skriv ut feilmelding for tom URL -adresse
ekko $ e-> getMessage ();

?>

Produksjon:

Kjør skriptet uten noen spørringsparameter.

http: // localhost/phpcode/Trycatch2.PHP

Kjør skriptet med en spørringsparameter som heter URL uten noen verdi.

http: // localhost/phpcode/Trycatch2.PHP?URL =

Kjør skriptet med en spørringsparameter som heter URL med en ugyldig URL -verdi.

http: // localhost/phpcode/Trycatch2.PHP?URL = Google

Kjør skriptet med en spørringsparameter som heter URL med en gyldig URL -verdi.

http: // localhost/phpcode/Trycatch2.PHP?url = http: // google.com
Bilde

Eksempel-3: Håndtering av filfeil ved å bruke prøve, fange og til slutt blokkere

Lag en PHP -fil med følgende skript for å vite bruken av forsøk, fange og til slutt blokkere. Skriptet vil prøve å åpne filtesten.txt 'og prøve Block vil kaste et unntak hvis filen ikke eksisterer på det nåværende stedet eller ikke kan åpne. Fangstblokken vil skrive ut feilmeldingen som kastes fra prøveblokken. Koden til den endelig blokkeringen vil lukke filbehandleren etter å ha utført prøveblokken. Try Block vil skrive ut innholdet i filen hvis ingen feil vises.

error_rapporting (0);
prøve

// Prøv å åpne en fil for lesing
$ file_handler = fopen ("test.txt "," r ");
hvis(!$ file_handler)

// Kast unntaket hvis filen ikke kan åpne
Kast nytt unntak ("

Kan ikke åpne filen.

");

ellers

// Skriv ut centent av filen
samtidig som(!feof ($ file_handler))

ekko fgets ($ file_handler) . ""
";

fClose ($ file_handler);


fangst (unntak $ e)
// Skriv ut feilmeldingen for å åpne filfeilfeil unntak
ekko $ e-> getMessage ();

endelig

// Skriv ut avslutningsmelding
ekko "program avsluttet.";

?>

Produksjon:

Kjør manuset.

http: // localhost/phpcode/Trycatch3.PHP

Eksempel-4: Bruke nestet prøvefangstblokk

Lag en PHP-fil med følgende skript for å kjenne måten å bruke den nestede forsøksvangsblokken. Skriptet vil sjekke verdien som er hentet fra en URL er et tall eller ikke i den første forsøks-catch-blokken, og det tatt nummeret er større enn 100 eller ikke vil bli sjekket i den andre prøve-fangstblokken.

if (isset ($ _ get ['n']))

// den første forsøksblokken
prøve
$ nummer = $ _get ['n'];
if (is_numeric ($ nummer))

// Den andre forsøksblokken
prøve
if ($ nummer> = 100)
// Skriv ut suksessmeldingen
ekko "Antallet er gyldig.";

annet
Kast nytt unntak ('Antallet er ugyldig.');


fangst (unntak $ e)
// Skriv ut den andre feilen
ekko $ e-> getMessage ();


ellers

Kast nytt unntak ('Verdien er ikke et tall.');


fangst (unntak $ e)
// Skriv ut Firt -feilen
ekko $ e-> getMessage () . ""
";


ellers
ekko "Ingen nummer har gitt.";
?>

Produksjon:

Kjør skriptet uten noen spørringsparameter.

http: // localhost/phpcode/Trycatch4.PHP

Kjør skriptet med spørringsparameterverdien mindre enn 100.

http: // localhost/phpcode/Trycatch4.PHP?n = 78

Kjør skriptet med spørringsparameterverdien større enn 100.

http: // localhost/phpcode/Trycatch4.PHP?n = 112

Eksempel-5: Bruke prøvefangstblokk med funksjonen

Lag en PHP-fil med følgende skript for å vite bruken av prøvefangstblokken med funksjonen. Skriptet vil ta to numeriske verdier fra URL-spørringsparametrene, og prøvekampblokken vil kalle en funksjon som vil kaste et unntak hvis "Divisjon med null”Feil har oppstått.

// definere funksjon for beregning av divisjon
funksjonsavdeling ($ a, $ b)
$ resultat = $ a/$ b;
hvis(!$ resultat)
// kast unntak for det ugyldige resultatet
Kast nytt unntak ('divisjon med null.');
ellers
ekko "

Resultatet av $ a/$ b = $ resultat

";

if (isset ($ _ get ['n1']) && isset ($ _ get ['n2']))

prøv
$ nummer1 = $ _get ['n1'];
$ nummer2 = $ _get ['n2'];
// samtalefunksjon som vil sjekke feil
Divisjon ($ nummer1, $ nummer2);

fangst (divisjonbyzeroerror $ e)
// Skriv ut feilmeldingen
ekko '

Feil: ', $ e-> getMessage (), "

";


ellers
ekko "Et eller flere tall er ikke gitt.";
?>

Produksjon:

Kjør skriptet uten noen spørringsparameter.

http: // localhost/phpcode/Trycatch5.PHP

Kjør skriptet med spørringsparameterverdiene, 10 og 5.

http: // localhost/phpcode/Trycatch5.PHP?n1 = 10 & n2 = 5

Kjør skriptet med spørringsparameterverdiene, 10 & 0.

http: // localhost/phpcode/Trycatch5.PHP?n1 = 10 & n2 = 0

Eksempel-6: Vis feilmelding i detalj for tilpasset unntak

Opprett en PHP -fil med følgende skript for å vise feilmeldingen i detalj ved å bruke forskjellige metoder i unntaksklassen. Skriptet tar filnavnet fra URL-parameteren og sjekker filen eksisterer eller ikke ved å bruke en prøvefangstblokk.

if (isset ($ _ få ['fn']))

prøv
$ filnavn = $ _get ['fn'];
hvis(!file_exists ($ filnavn))

Kast nytt unntak ('filen eksisterer ikke.');


fangst (unntak $ e)
// Vis feilmelding i detaljer
ekko '
Filnavn: '.$ e-> getFile ().
'
Feil oppstod på linjenummer: '.$ e-> getline ().
'
Feilmelding: '.$ e-> getMessage ();

endelig
ekko "
Sjekk en annen fil.";


ellers
ekko "filnavn har ikke gitt.";
?>

Produksjon:

Kjør skriptet uten noen spørringsparameter.

http: // localhost/phpcode/trycatch6.PHP

Kjør skriptet med spørringsparameteren som inneholder det ikke-eksisterende filnavnet.

http: // localhost/phpcode/trycatch6.PHP?FN = tekst.tekst

Kjør skriptet med spørringsparameteren som inneholder det eksisterende filnavnet.

http: // localhost/phpcode/trycatch6.PHP?FN = TryCatch5.PHP

Konklusjon

De grunnleggende bruken av prøvefangstblokken er blitt forklart i denne opplæringen ved å bruke veldig enkle PHP-skript. Jeg håper konseptet med unntakshåndtering i PHP vil bli ryddet etter å ha praktisert eksemplene på denne opplæringen riktig.