Innledning Dette er del 1 av min serie, Unntak håndtering i PHP. I denne delen av serien ser vi på det grunnleggende unntak i PHP. Du trenger grunnleggende kunnskaper i PHP og PHP objektorientert programmering for å forstå denne serien. Hvis du ikke har kunnskap i noen av disse feltene deretter fra denne bloggen, lese serien som første del har tittelen, "Komme i gang med PHP" og en annen som første del har tittelen "OOP Basics i PHP". For å nå noen av serien, bare skriv tittelen og navnet mitt Chrys i søkeboksen på denne siden og klikk Søk.
Merk: Hvis du ikke kan se koden, eller hvis du tror noe mangler (ødelagt kobling, bilde fraværende), bare kontakte meg på [email protected]. Det er, kontakt meg for den minste problemet du har om hva du leser. Runtime Error Eksempel Betrakt følgende kode: $ teller = 8; $ evner = 2; if ($ evner = 0) {$ svar = $ teller /$ evner; echo $ svaret; } Else {echo "Divisjon med null er ikke tillatt!"; }?> Denne koden utgangspunktet skiller to tall. I livet kan du ikke dele et tall med null. Forutsatt at nevneren er innspill av brukeren, kan han innspill null.
Divisjonen (prosess) med null bør ikke være tillatt. La oss se på hva som er i koden: de to første påstandene er initialisering av heltall. Divisjonen skal skje i if-blokken. If-betingelsen sjekker om nevneren er null. Hvis den ikke er det, skjer delingen sted i if-blokken. Hvis det er, den andre delen av if-konstruksjonen viser en feilmelding til brukeren. Denne koden segmentet er OK, fordi hvis nevneren er null, if-blokken vil ikke bli henrettet, og ingen divisjonen vil finne sted. Med koden ovenfor, fortsetter utførelsen av programmet etter at hvis /else konstruere.
Dette hvis /else konstruere gjør divisjonen og hindrer runtime error fra pågår. If-blokken gjør divisjon; If-betingelsen sjekker om ville oppstå feil; hvis ville oppstå feil, viser den andre blokken en varselmelding, og if-blokken og divisjon utføres ikke. Grunnleggende komponentene Unntak Enkelt sagt, er unntak en feil. Med unntak håndtering, har du det som kalles prøve /fangst konstruksjon; består av prøve og fange blokker. Try blokken har et viktig uttrykk, som er, kaste. kaste tar et nytt objekt kalt Exception Object.
Unntaks objektet er en forhåndsdefinert objekt som hjelper deg å håndtere unntak. I de ovennevnte hvis /else konstruere, kodesegmentet av interesse, som er den delen som kreves, er det if-blokken. Dette if-blokken er det som gjør divisjonen. Med Unntak håndtering, at kodesegmentet av interesse går inn i prøve-block; feilmeldingen kodesegmentet eller feilhåndterer kodesegmentet går inn i catch-blokken. Innkastet uttrykk i try-blokken kaller catch-blokk passerer en ny unntaksobjekt til det. Fangsten konstruksjonen er som en funksjon.
Dette er den grunnleggende syntaks for avvikshåndtering, try {//uttalelser av interesse kaste nytt unntak (Errormessage, kode); } Catch (Exception $ e) {//håndtere feil} Argumentet for innkastet uttrykket går ikke i parentes. Det er et nytt unntak instansiert objekt som ikke trenger å ha et navn. Du kan vri koden din rundt for å gi den et navn, men det er greit som det er over. Parametrene for det nye objekt unntaket er begge valgfrie. Den første er feilmeldingen du velger du ønsker å gi til brukeren av programmet. Den andre er et heltall av ditt valg som representerer feilen.
Catch-blokken bør umiddelbart følge try-blokken i å skrive, som i ovennevnte syntaks. Den mottar den nye instansiert unntak objekt kastet. Parameteren for catch-blokken er "Exception $ e". Her, ordet, Exception betyr type objekt mottatt, er et unntak objekt. $ e er den variabelen som identifiserer den nye instansiert unntak objekt (mottatt i catch-blokk).
Forrige program er re-skrevet med prøve /fangst konstruere som følger: $ teller = 8; $ evner = 2; try {if ($ evner = 0) {$ svar = $ teller /$ evner; echo $ svaret; } Else {kaster nytt unntak ("Deling med null er ikke tillatt!"); }} Catch (Exception $ e) {echo $ e-> GetMessage (); }?> Les og prøv ovenfor program. Endre verdien av $ evner til null og prøve programmet på nytt. Husk, for innkastet operand ovenfor, de to argumentene til konstruktøren funksjon av Exception klasse er valgfritt. I denne koden, har bare feilmeldingen av programmererens valg er gitt.
Hvis programmereren ikke gir dette argumentet, standard feilmelding av "Ukjent exception" vil bli holdt av den nye instansiert unntak objekt. Catch-blokken fanger unntak gjenstand kastet som parameter (argument), $ e. Unntaks klasse har en metode som ville lese feilmeldingen du skrev under oppretting av den nye unntaksobjekt. Navnet på metoden er, GetMessage. Catch-blokken ovenfor bare ekko meldingen. Les gjennom koden ovenfor igjen. I mange tilfeller har try-blokken equivalently en if-tilstand hvis blokken vil gjennomføre hvis tilstanden ikke oppdager feilen.
Hvis tilstanden oppdager feilen, vil if-blokken ikke utføre, og den andre delen vil kaste unntak; som er, vil den andre delen kaller catch-blokken sender argument (instansiert unntak objekt) i kast uttrykk for det. Catch-blokken bruker argumentet for å vise en passende feilmelding (skrevet i løpet av oppretting) til brukeren. Dette er hva som skjer i mange tilfeller. Feil er vanligvis ikke behandles i den virkelige betydningen av ordet; vanligvis en feilmelding sendes til brukeren, en if-konstruere i prøve blokk hindrer feil fra faktisk oppstår.
Etter denne henrettelsen, fortsetter programmet i sekvensen fra prøve /fangst konstruksjon; og det er ingen avsluttes programmet, selv om en feil ble detektert. Kast Expression i en funksjon Du kan sette det du trenger for prøve blokk i en funksjon som vist nedenfor: $ teller = 8; $ evner = 2; fungere errFn () {if {$ svar = $ teller /$ nevner ($ evner = 0!); echo $ svaret; } Else {kaster nytt unntak ("Deling med null er ikke tillatt!"); }} Try {errFn (); } Catch (Exception $ e) {echo $ e-> GetMessage (); }?>