Inleiding Dit is deel 1 van mijn reeks, Uitzondering Handling in PHP. In dit deel van de serie kijken we naar de basis van de uitzonderingen in PHP. Je nodig hebt basiskennis in PHP en PHP Object Oriented Programming om deze serie te begrijpen. Als u niet de kennis in een van die gebieden moeten dan van deze blog, lees de serie waarvan het eerste deel is getiteld, "Aan de slag met PHP" en een ander wiens eerste deel is getiteld "OOP Basics in PHP". Een van de serie te bereiken, typ de titel en mijn naam Chrys in het zoekvak van deze pagina en klik op Zoeken.
Opmerking: Als u de code niet kunt zien of als u denkt dat er iets ontbreekt (gebroken link afbeelding afwezig), neem dan contact met mij op [email protected]. Dat wil contact met mij op voor het geringste probleem dat je hebt over wat je aan het lezen bent. Runtime Error Voorbeeld Beschouw de volgende code: $ teller = 8; $ noemer = 2; if ($ noemer = 0!) {$ antwoord = $ teller /$ noemer; echo $ antwoord; } Else {echo "Division door nul is niet toegestaan!"; }?> Deze code verdeelt in principe twee nummers. In het leven kun je niet van een aantal delen door nul.
Ervan uitgaande dat de noemer wordt ingevoerd door de gebruiker, kan hij invoer nul. De divisie (proces) door nul mag niet worden toegestaan. Laten we eens kijken naar wat er in de code: de eerste twee verklaringen zijn initialisatie van gehele getallen. De divisie moet plaatsvinden in het if-blok. De als voorwaarde controleert of de noemer nul is. Zo niet, de splitsing plaatsvindt in het if-blok. Als het is, de ander deel van de if-constructie geeft een foutmelding aan de gebruiker. Deze code segment is OK, want als de noemer nul is, indien het blok niet uitgevoerd en geen scheiding plaats.
Met de bovenstaande code, de uitvoering van het programma verder na de if /else constructie. Dit if /else constructie doet de divisie en voorkomt runtime error uit plaatsvindt. De if-blok doet de divisie; de als voorwaarde controleert of fout zou optreden; Als fout zou optreden, de andere blok verschijnt een waarschuwingsbericht en het if-blok en divisie worden niet uitgevoerd. Basiscomponenten van Exception In eenvoudige termen, uitzondering is een fout. Met exception handling, je hebt wat wordt het construct try /catch genoemd; samengesteld uit de try en catch-blokken.
De try-blok heeft een belangrijke uitdrukking, dat is, te gooien. worp neemt een nieuw object met de naam van de Exception object. De Exception object is een vooraf gedefinieerd object dat je helpt uitzonderingen te behandelen. In de bovenstaande if /else, het codesegment van belang, dat het segment vereist is als blok. Dit blok als-is wat doet de divisie. Met Exception handling, die code segment van belang gaat in de try-blok; de foutmelding code segment of fout handler code segment gaat in de catch-blok.
De worp uitdrukking in de try-blok noemt de catch-blok passeren van een nieuwe uitzondering object aan. Het construct vangst is als een functie. Dit is de basis syntax voor exception handling, probeer {//statements van belang werpen een nieuw Exception (errorMessage, code); } Catch (Exception $ e) {//omgaan met de fout} Het argument voor de worp expressie niet in haakjes gaan. Het is een nieuw Exception geïnstantieerd object dat niet nodig om een naam hebben. U kunt uw code rond verdraaien om het een naam, maar het is goed zoals het is boven.
De parameters van de nieuwe uitzonderingsobject beide optioneel. De eerste is de foutmelding van uw keuze die je wilt geven aan de gebruiker van het programma. De tweede is een geheel getal van keuze die de fout vertegenwoordigt. De catch-blok moet onmiddellijk na de try-blok in uw het typen, zoals in de bovenstaande syntax. Het ontvangt de nieuwe geïnstantieerd uitzondering object gegooid. De parameter voor de catch-blok is, "Exception $ e". Hier, het woord, Uitzondering, betekent het type object ontvangen, is een uitzondering object.
$ e is de variabele die het nieuwe ingekaderde uitzondering object (ontvangen in de catch-blok) identificeert. Het vorige programma wordt herschreven met de try /catch bouwen als volgt: $ teller = 8; $ noemer = 2; probeer {if ($ noemer = 0!) {$ antwoord = $ teller /$ noemer; echo $ antwoord; } Else {werpen een nieuw Exception ("Division door nul is niet toegestaan!"); }} Catch (Exception $ e) {echo $ e-> GetMessage (); }?> Lees en probeer het bovenstaande programma. Wijzig de waarde van $ noemer op nul en probeer het programma opnieuw.
Vergeet niet, voor de worp operand boven, de twee argumenten van de constructorfunctie van de Exception klasse zijn optioneel. In deze code, is alleen de foutmelding van de keuze van de programmeur is gegeven. Als de programmeur dit argument, de standaard foutmelding van "Onbekend uitzondering" niet geeft zou worden gehouden door de nieuwe ingekaderde uitzondering object. De catch-blok vangt de uitzondering object gegooid als de parameter (argument), $ e. De Exception klasse heeft een methode die de foutmelding die u hebt getypt tijdens het starten van de nieuwe uitzondering object zou lezen.
De naam van de werkwijze, GetMessage. De catch-blok boven gewoon echo de boodschap. Lees de bovenstaande code opnieuw. In veel gevallen is de try-blok heeft een gelijkwaardig als voorwaarde waarvan het blok zal uitvoeren als de voorwaarde niet de fout op te sporen. Als de toestand van de fout ontdekt, wordt het if-blok niet uit te voeren, en de andere kant zal de uitzondering te gooien; dat wil zeggen, zal de ander deel van de catch-blok het verzenden van het argument (geïnstantieerd uitzondering object) van de worp expressie, te noemen.
De catch-blok maakt gebruik van het argument om een passende foutmelding (getypt tijdens de concretisering) aan de gebruiker weer te geven. Dit is wat er gebeurt in veel gevallen. Fouten worden meestal niet verwerkt in de echte zin van het woord; meestal een fout bericht wordt verzonden naar de gebruiker, een if-Construct in het blok try voorkomt dat de fout van daadwerkelijk optreedt. Na deze uitvoering, het programma verder in volgorde van het construct try /catch; en er is geen beëindiging van het programma, zelfs als er een fout werd ontdekt.
Gooi Expressie in een functie U kunt zetten wat je nodig hebt voor de try-blok in een functie, zoals hieronder afgebeeld: $ teller = 8; $ noemer = 2; functioneren errFn () {if {$ antwoord = $ teller /$ noemer ($ noemer = 0!); echo $ antwoord; } Else {werpen een nieuw Exception ("Division door nul is niet toegestaan!"); }} Proberen {errFn (); } Catch (Exception $ e) {echo $ e-> GetMessage (); }?>