PHP Kokeile saalisesimerkkiä: Poikkeus & Virhe opetusohjelman käsittelyssä

Sisällysluettelo:

Anonim

Mikä on poikkeus?

Virhe on odottamaton ohjelman tulos, jota ohjelma ei voi itse käsitellä.

Virheet ratkaistaan ​​korjaamalla ohjelma. Esimerkki virheestä on ääretön silmukka, joka ei koskaan lopeta suorittamista.

Poikkeuksena on odottamaton ohjelman tulos, jonka ohjelma voi itse hoitaa.

Esimerkkejä poikkeuksista ovat sellaisen tiedoston avaaminen, jota ei ole olemassa.

Tämä poikkeus voidaan hoitaa joko luomalla tiedosto tai tarjoamalla käyttäjälle mahdollisuus etsiä tiedostoa.

Tässä opetusohjelmassa opit-

  • Miksi käsitellä poikkeusta?
  • PHP-virheiden käsittely
  • Virhe esimerkkien käsittelyssä
  • Ero virheiden ja poikkeuksen välillä
  • Useita poikkeuksia
  • Testataan koodia

Miksi käsitellä poikkeusta?

  • Vältä odottamattomia tuloksia sivuillamme, jotka voivat olla erittäin ärsyttäviä tai ärsyttäviä loppukäyttäjillemme
  • Paranna sovellusten turvallisuutta olemalla paljastamatta tietoja, joita haitalliset käyttäjät voivat käyttää hyökkäämään sovelluksiimme
  • Php-poikkeuksia käytetään muuttamaan ohjelman normaalia kulkua, jos tapahtuu ennustettavissa olevaa virhettä.

PHP-virheiden käsittely

Kun tapahtuu virhe, kokoonpanon asetuksista riippuen, PHP näyttää virheilmoituksen verkkoselaimessa, jossa on tietoja tapahtuneesta virheestä.

PHP tarjoaa useita tapoja käsitellä virheitä.

Tarkastelemme kolmea (3) yleisesti käytettyä menetelmää;

  1. Die-lauseet - die-toiminto yhdistää kaiun ja poistumisen toiminnon yhdessä. Se on erittäin hyödyllinen, kun haluamme lähettää viestin ja lopettaa komentosarjan suorittamisen virheen sattuessa.
  2. Mukautetut virheenkäsittelijät - nämä ovat käyttäjän määrittämiä toimintoja, joita kutsutaan aina, kun tapahtuu virhe.
  3. PHP-virheraportointi - virhesanoma riippuen PHP-virheraportointiasetuksista. Tämä menetelmä on erittäin hyödyllinen kehitysympäristössä, kun sinulla ei ole aavistustakaan, mikä aiheutti virheen. Näytetyt tiedot voivat auttaa sovelluksen virheenkorjauksessa.

Virhe esimerkkien käsittelyssä

Katsotaan nyt joitain yksinkertaisia ​​esimerkkejä virheiden käsittelystä.

Oletetaan, että olemme kehittäneet sovelluksen, joka käyttää tekstitiedostoja tietojen tallentamiseen. Voisimme ehkä tarkistaa tiedoston olemassaolon ennen kuin yritämme lukea tietoja siitä.

Alla oleva koodi toteuttaa yllä olevan esimerkin.

Olettaen, että olet tallentanut tiedoston simple_error.php phptuts-kansioon, avaa URL-osoite http: //localhost/phptuts/simple_error.php

Saat seuraavat tulokset

Kuten yllä olevista tuloksista näet, se saa sovelluksemme näyttämään epäammattimaiselta ja voi olla ärsyttävää käyttäjälle.

Muutamme yllä olevaa koodia ja kirjoitamme virheenkäsittelijän sovellukselle

Jos olet tallentanut yllä olevan koodin nimellä error_handling.php, avaa URL-osoite http: //localhost/phptuts/error_handling.php

Huomaa: on hyvä turvallisuustapa näyttää viesti yllä esitetyllä tavalla sen sijaan, että näytetään viesti, kuten "Tiedostoa ei löydy".

Katsotaanpa toinen esimerkki, joka käyttää mukautettua virhekäsittelijää.

Mukautettu virheenkäsittelijä asetetaan oletukseksi PHP-virheenkäsittelytoiminnoksi, ja se näyttää periaatteessa virheen numeron ja viestin.

Alla oleva koodi kuvaa yllä olevan esimerkin toteutusta

Avaa URL-osoite http: //localhost/phptuts/custom_error_handler.php. Saat seuraavat tulokset

.

Kuten yllä olevasta esimerkistä näet, mukautetut virheenkäsittelijät ovat siinä mielessä tehokkaita

  • Niiden avulla voimme mukauttaa virheilmoituksia.
  • Mukautettu virheenkäsittelijä voi sisältää myös virheiden kirjaamisen tiedostoon / tietokantaan, sähköpostin lähettämisen kehittäjälle jne.

Katsotaan nyt nyt kolmannen tyyppistä virheenkäsittelyä. Käytämme sisäänrakennettua PHP-toimintoa error_reporting. Sillä on seuraava perussyntaksi

TÄSSÄ,

  • “Error_reporting” on PHP-virheilmoitustoiminto
  • "$ Report_level" on valinnainen, sitä voidaan käyttää raportointitason asettamiseen. Jos raportointitasoa ei ole määritetty, PHP käyttää oletusvirheraportointitasoa, joka on määritelty php.ini-tiedostossa.
Raportointitaso Kuvaus Esimerkki
VAROITUS Näyttää vain varoitusviestit. Ei pysäytä komentosarjan suorittamista virheilmoitus (E_VAROITUS);
E_NOTICE Näyttää ilmoituksia, joita voi esiintyä ohjelman normaalin suorituksen aikana tai jotka voivat olla virheitä. virheilmoitus (E_ ILMOITUS);
E_USER_ERROR Näyttää käyttäjän luomat virheet eli mukautetun virheenkäsittelijän virheilmoitus (E_ USER_ERROR);
E_USER_WARNING Näyttää käyttäjän luomat varoitusviestit virheilmoitus (E_USER_WARNING);
E_USER_NOTICE Näyttää käyttäjän luomat ilmoitukset virheilmoitus (E_USER_NOTICE);
E_RECOVERABLE_ERROR Näyttää virheet, jotka eivät ole kohtalokkaita ja jotka voidaan käsitellä mukautetuilla virhekäsittelijöillä virheilmoitus (E_RECOVERABLE_ERROR);
E_ALL Näyttää kaikki virheet ja varoitukset virheilmoitus (E_ ALL);

Ero virheiden ja poikkeuksen välillä

  • Poikkeukset heitetään ja on tarkoitus saada kiinni, kun taas virheitä ei yleensä voida korjata.
  • Poikkeuksia käsitellään olio-suuntautuneella tavalla.

    Tämä tarkoittaa, kun poikkeus heitetään; luodaan poikkeusobjekti, joka sisältää poikkeustiedot.

Alla olevassa taulukossa esitetään poikkeusobjektimenetelmät

Menetelmä Kuvaus Esimerkki
getMessage () Näyttää poikkeuksen viestin
getMessage();?>
Hanki koodi() Näyttää numerokoodin, joka edustaa poikkeusta
getCode();?>
getFile () Näyttää tiedoston nimen ja polun, jossa poikkeus tapahtui
getFile();?>
getLine () Näyttää rivinumeron, jossa poikkeus tapahtui
getLine();?>
getTrace () Näyttää taaksepäin jäljitelmän ennen poikkeusta
getTrace());?>
getPrevious () Näyttää edellisen poikkeuksen ennen nykyistä poikkeusta
getPrevious();?>
getTraceAsString () Näyttää poikkeuksen taaksepäin merkkijonon matriisin sijaan
getTraceAsString();?>
__toString () Näyttää koko poikkeuksen merkkijonona
__toString();?>

Alla on perussyntaksi poikkeuksen heittämiseen.

TÄSSÄ,

  • "Heittää" on avainsana, jolla heitetään poikkeus
  • "New Exception (…)" luo poikkeusobjektin ja välittää viestiparametriksi merkkijonon "Tämä on poikkeusesimerkki".

Yllä oleva koodi antaa seuraavan viestin.

Etsimme nyt esimerkkiä, joka toteuttaa heitto- ja saalispoikkeukset.

Muutamme yllä olevaa esimerkkiä ja sisällytämme kokeilun, heiton ja kiinnioton.

Sillä on seuraava perussyntaksi.

TÄSSÄ,

  • “Try {…}” on suoritettava koodilohko, joka saattaa aiheuttaa poikkeuksen
  • “Catch (Exception $ e) {…}” on koodilohko, joka tarttuu heitettyyn poikkeukseen ja määrittää poikkeusobjektin muuttujalle $ e.

Alla oleva koodi näyttää peruspoikkeusesimerkin kokeilun, heiton ja kiinnioton poikkeuksen kanssa.

Ohjelma heittää tarkoituksella poikkeuksen, jonka se sitten saa kiinni.

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

Avaa URL-osoite http: //localhost/phptuts/exception_handling.php Saat seuraavat tulokset.

On myös mahdollista luoda useita poikkeuksia yhdelle php try -lausekkeelle riippuen heitetyn poikkeuksen tyypistä.

Katso artikkeli MySQL: stä, PHP-tietojen käytöstä

… Esimerkkejä useista poikkeuksista

Useita poikkeuksia

Useissa poikkeuksissa käsitellään heitettyjä poikkeuksia käyttämällä useita kokeilulohkoja. Useat poikkeukset ovat hyödyllisiä, kun;

  • Haluat näyttää mukautetun viestin heitetyn poikkeuksen mukaan
  • Haluat suorittaa ainutlaatuisen toiminnon heitetyn poikkeuksen mukaan

Alla oleva vuokaavio kuvaa kuinka monet poikkeukset toimivat

Katsotaanpa esimerkkiä, joka käyttää useita poikkeuksia.

Me muokkaamme koodia, joka jakaa numeron syötetyllä nimittäjällä.

Odotamme kahdenlaisia ​​poikkeuksia;

  • Nollalla jakaminen
  • Jako negatiivisella luvulla

Yksinkertaisuuden vuoksi näytämme poikkeustyypin vain saalislohkoissamme.

Exception-luokan sisäänrakennettua PHP: tä käytetään poikkeusten heittämiseen.

Luomme kaksi luokkaa, jotka laajentavat poikkeusluokkaa ja käyttävät niitä heittämään poikkeuksia.

Alla oleva koodi näyttää toteutuksen.

Testataan koodia

Oletetaan, että olet tallentanut multiple_exceptions.php: n phptuts-kansioon.

Selaa URL-osoitteeseen http: //localhost/phptuts/multiple_exceptions.php

Vaihda takaisin PHP-tiedostoon ja välitä -1 parametrina seuraavan kaavion mukaisesti.

Selaa URL-osoitteeseen http: //localhost/phptuts/multiple_exceptions.php .

Mitä tuloksia saat? Pass 3 parametrina.

Mitä tuloksia saat?

Yhteenveto

  • Virheet ovat odottamattomia tuloksia, jotka tuottaa PHP-koodi
  • Virheiden käsittely parantaa sovelluksen suorituskykyä
  • PHP: ssä on sisäänrakennettuja toimintoja, joiden avulla voidaan mukauttaa tapaa, jolla PHP ilmoittaa virheistä
  • Poikkeukset ovat kuin virheitä, mutta ne voidaan saada kiinni salpalohkosta heitettäessä.
  • Virhetietoja näyttävien virheilmoitusten näyttämistä pidetään huonoina tietoturvakäytäntöinä.