Grunnleggende PHP - Del 15 Innledning Dette er del 15 av min serie, Grunnleggende PHP. I denne delen av serien, ser vi på det grunnleggende feil. 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. Programmeringsfeil Det er tre typer av programmeringsfeil. Med andre ord, er det tre typer av feil som kan oppstå i et program. Du har syntaksfeil, logiske feil og Runtime feil. Syntaksfeil Dette er feil bruk av syntaks.
Disse feilene er gale påstander. Når du skriver en uttalelse, som er galt, er at en syntaksfeil. En slik uttalelse kan ikke utføres. For eksempel, i en uttalelse kan du skrive en variabel uten $ tegn. Under denne tilstanden, ikke programmet fungerer. Avhengig av hvordan du konfigurerer PHP installasjon, kan en slik feilmelding med PHP til utskriftsenheten like før programmet er å bli henrettet, når du gir en kommando for å kjøre programmet. Med en syntaksfeil, er programmet ikke utført. Før PHP-kode er utført, er det noen minimum kompilering som finner sted.
Syntaksfeil ville bli oppdaget av PHP kompilatoren og rapportert, og utførelse (tolkning) av programmet vil ikke finne sted. Logiske feil i denne saken, PHP tolk forstår programmet veldig godt, og det kjøres programmet. Imidlertid vil programmet ikke gjøre hva du ville ha det til å gjøre. Den vil gjøre noe litt annerledes eller helt annerledes. Feilen er ditt. For eksempel kan en sløyfe som er nødvendig for å gjøre 10 gjentakelser gjøre 5 gjentakelser, fordi du kodet det feilaktig å gjøre 5 iterasjoner.
Et annet eksempel er at en løkke kan iterere uendelig, fordi tilstanden du ga for sløyfen er galt. Logiske feil oppstår når programmet blir utført (tolket). Den eneste måten å løse dette problemet er å teste programmet veldig godt før du leverer den til kunden (som ba om det). Kjøretid feil runtime feil oppstår når programmet blir utført som et resultat av det faktum at du ikke ta viss faktor i betraktning når koding. For eksempel, la oss si koden din er å dele åtte av noen nevner at de bruker innganger. Hvis brukeren innganger 2 Divisjonen vil fungere, noe som gir deg fire som svar.
Hvis brukeren innganger null, vil delingen ikke fungere, fordi 8/0 er udefinert. Når en kjøretidsfeil oppstår programmet normalt krasjer (og stanse). For å løse runtime feil, må du skrive kode som vil hindre gjennomføring av den aktuelle kodesegmentet fra pågår. I denne divisjonen eksempel, har du å skrive kode som vil hindre divisjon med null fra pågår, og muligens informere brukeren av feil han gjorde ved å legge inn null som nevner. Forhindre runtime feil Runtime feil forhindres ved hjelp av det som kalles try-catch-blokker.
Vi skal bruke eksempelet med dele 8 ved et multiplum for å illustrere dette. Vurdere følgende kode: $ innspill = 2; try {if ($ innspill == 0) kaster nytt unntak ('divisjon med null er ikke tillatt.'); $ var = 8 /$ innspill; echo $ var; } Catch (Exception $ e) {echo "Feil:" $ e-> GetMessage (); }?> Prøv koden ovenfor. Du bør ha fire som svaret, vises. Nå endre verdien av $ innspill variable i begynnelsen av koden til 0. Du bør ha teksten "Feil: Division by zero er ikke tillatt." vises. Koden deler 8 med verdien av den inngangsvariable $.
Når verdien av $ inngangsvariabelen ikke er null, er alt i orden. Når verdien er null, er det en feil, og så programmet bør ikke krasje. Koden må være skrevet for å hindre at programmet krasjer. Det er fire ting du bør være oppmerksom på om koden ovenfor. Det er prøve-block; det er catch-blokk; det er et objekt skapt fra en klasse kalt Exception; og det er en uttalelse kalt kaste utsagnet rundt begynnelsen av forsøk blokken. Try-blokken begynner med det reserverte ordet, prøve, så har du to klammeparentes. Uttalelsene til prøve blokken er i klammeparentes.
Catch-blokken begynner med det reserverte ordet, fangst. Det har parente med en parameter. Parameteren er en variabel, innledes med variabel type (vi har ikke sett denne variabelen type før). Catch-blokken har et par klammeparentes. Uttalelsene for fangsten blokka går inn i klammeparentes. Den aller første setningen i try-blokken er en if-statement kombinert med det som kalles kast uttalelsen? Tanken er at du sjekke om $ innspill variabelen er null. Hvis det er null, så kast setningen utføres for å hindre ulykken. Når kaste setningen utføres, sier vi et unntak.
Når et unntak, er utsagnene nedenfor innkastet setningen i forsøk blokken ikke utført; mens uttalelser i catch-blokken skal utføres; det vil si når det oppstår en feil, utsagnene nedenfor innkastet setningen i try-blokken utføres ikke, mens catch-blokken må gjennomføres for å håndtere problemet. Hvis det oppstår noen feil (i dette tilfellet, er inngang ikke null), da et unntak vil ikke bli kastet. Hvis et unntak ikke blir kastet, blir utsagnene nedenfor Kast uttalelser i prøve-blokken utføres, og catch-blokken er ikke utført.
Try-blokken har de vanlige utsagn for å bli henrettet for å løse oppgaven kreves av programmet. Disse uttalelsene er utført under forutsetning av at ingen feil har oppstått. Catch-blokken har uttalelser å bli henrettet hvis det oppstår en feil. Vanligvis hva fangsten blokken gjør er at det rett og slett informerer brukeren om at en feil har oppstått med en kort beskrivelse av feilen. Hvis det oppdages feil i prøve blokk og catch-blokken blir utført som i koden ovenfor, så programmet ikke vil krasje.
Jeg gjentar, vanligvis, catch-blokken ikke gjøre mye mer enn å vise en kort feilmelding til brukeren. Forebygging av krasj er som et resultat av det faktum at de normale uttalelser i prøve blokken ikke blir henrettet og catch-blokken blir utført. Introduksjon til Exception Class Det er en klasse kalt Exception klassen. Denne klassen har en god del medlemmer og metoder. For denne grunnleggende opplæringen skal vi snakke om bare ett av sine medlemmer. Medlemmet har feilmeldingen du ønsker å gi til brukeren. Du, programmerer, er den som bestemmer på feilmeldingen.
Du mate i feilmeldingen når du oppretter et objekt fra klassen. Du oppretter et objekt på samme tid som du kaster unntaket. I koden ovenfor, har vi, kaster nytt unntak ('divisjon med null er ikke tillatt.') Her det reserverte ordet, kaste, er å kaste unntaket. Unntaket er et objekt, som kan ha feilmeldingen og andre ting. I denne opplæringen, anser vi bare feilmeldingen. Å skape et unntak objekt, begynner vi med operatøren, nye. Dette blir etterfulgt, ved navnet på den klasse, unntak; deretter parentes. I parentes, skriver du feilmeldingen i anførselstegn.
Unntaks klasse har en konstruktør metode som tildeler denne feilmeldingen som verdi til en av sine medlemmer (en av variablene). Dette unntaket gjenstand blir kastet å være fanget være en catch-blokken. Så if-setningen oppdager feilen, kaster et unntak objekt, som vet feilen og catch-blokken fanger unntak objekt. Catch-blokken bruker informasjonen i unntaksobjekt for å fullføre feilbehandling. Catch-blokken fangsten er som en funksjon. Det har parentesene, som har en parameter. Parameteren er variabelen for et unntak objekt.
Du velger det navnet du ønsker for variabelen, og foran den med $ tegn. Du foran variabelen med ordet, Exception. Dette betyr en type variabel er et unntak. Innkastet uttalelsen er som et kall til catch-blokken. I koden ovenfor, har vi ekkoet uttalelse. Ekkoet konstruere tar en kommaseparert liste med argumenter. I dette tilfelle er det første argumentet strengen "Feil:". Denne strengen vises først på nettleseren. Denne strengen indikerer for brukeren at det er en feil. Beskrivelsen av feilen følger av neste argument.
Denne neste argument til ekko konstruksjonen er en returverdi av en fremgangsmåte av den unntaket objektet. Hva har vi egentlig er: $ e->