PHP Izjeme
Vadnica logo
vadnica logo
x
HTML CSS JavaScript jQuery SQL PHP Laravel
HTML CSS JavaScript jQuery MySQL PHP Include Echo, Print Podatkovni tipi (Data Types) Spremenljivke (Variables) Nizi (String) Pretvorba podatkov (Casting) Izjeme Pogojni stavki Zanke Datum in Čas Koledar Funkcije Matrika (Array) MySQLi Obrazci (Forms) Filtri Ključne besede (Keyword) OOP (Razredi in Objekti) Razno Superglobalne spremenljivke Omrežne funkcije Laravel

PHP Izjeme

Izjema je predmet, ki opisuje napako ali nepričakovano vedenje PHP skripta, ki jih povzročajo številne funkcije in razredi. Uporabniško določene funkcije in razredi lahko vržejo tudi izjeme. So dober način za zaustavitev funkcije, ko naleti na podatek, ki ga ne more uporabiti. Izjava omogoča uporabniško določeni funkciji ali metodi, da zažene izjemo. Če izjema ni ujeta, se bo pojavila napaka s sporočilom.

PHP Izjeme

Poskusimo ustvariti izjemo, ne da bi jo ujeli.

PRIMER
<?php
function delilnik($delitelj, $delilec)
{
    if ($delilec == 0) {
        throw new Exception("Deljenje z ničlo.");
    }
    return $delitelj / $delilec;
}

echo delilnik(13, 0);
            
REZULTAT
C:\xampp\php\php.exe -c C:\xampp\php\php.ini "C:\Users\"
PHP Fatal error:  Uncaught Exception: Deljenje z ničlo.
Stack trace:
#0 C:\: delilnik(13, 0)
#1 {main} thrown in C:\

Process finished with exit code 255
            

Da bi se izognili napaki iz zgornjega primera, lahko uporabimo stavek try...catch za lovljenje (catch) izjem in nadaljevanje postopka.

Sintaksa:
try {
    koda, ki lahko vrže izjemo
}   catch(Exception $e) {
    koda, ki se zažene, ko je izjema ujeta
}
    
PRIMER
<?php
function delilnik($delitelj, $delilec)
{
    if ($delilec == 0) {
        throw new Exception("Deljenje z ničlo.");
    }
    return $delitelj / $delilec;
}

try {
    echo delilnik(13, 0);
}   catch (Exception $e) {
    echo "\nDelitev ni mogoča.\n";
}
            
REZULTAT
C:\xampp\php\php.exe -c C:\xampp\php\php.ini "C:\Users\"

Delitev ni mogoča.

Process finished with exit code 0
            

Blok catch označuje vrsto izjeme, ki jo je potrebno ujeti, in ime spremenljivke, ki jo je mogoče uporabiti za dostop do izjeme. V zgornjem primeru je vrsta izjeme Exception, ime spremenljivke pa $e.

Izjava try...catch...finally

Stavek try...catch...finally lahko uporabimo za lovljenje izjem. Koda v bloku finally se bo vedno izvajala ne glede na to, ali je bila ujeta izjema, če je izjema finally prisotna, block catch ni obvezen.

Sintaksa:
try {
    koda, ki lahko vrže izjemo
}   catch(Exception $e) {
    koda, ki se zažene, ko je izjema ujeta
}   finally {
    koda, ki se vedno izvaja ne glede na to ali je bila izjema ujeta
}
    

Prikaže sporočilo, ko je izjema (Exception) izvržena in nato označi, de je postopek končan.

Izjava try...catch...finally
Izjava try...catch...finally
PRIMER
<?php
function delilnik($delitelj, $delilec)
{
if ($delilec == 0) {
throw new Exception("Deljenje z ničlo.");
}
return $delitelj / $delilec;
}

try {
echo delilnik(13, 0);
}   catch (Exception $e) {
echo "\nNapaka: " . $e->getMessage() . "\n";
}   finally {
echo "Postopek je končan.\n";
}
            
REZULTAT
C:\xampp\php\php.exe -c C:\xampp\php\php.ini "C:\Users\"

Napaka: Deljenje z ničlo.
Postopek je končan.

Process finished with exit code 0
            

Kaj pa če izjema (Exception) ni ujeta? Poglejmo si primer:

PRIMER
<?php
function delilnik($delitelj, $delilec)
{
    if ($delilec == 0) {
        throw new Exception("Deljenje z ničlo.");
    }
    return $delitelj / $delilec;
}

try {
    echo delilnik(13, 0);
}   finally {
    echo "\nPostopek je končan.\n";
}
            
REZULTAT
C:\xampp\php\php.exe -c C:\xampp\php\php.ini "C:\Users\"
PHP Fatal error:  Uncaught Exception: Deljenje z ničlo. in C:\Users\:5
Stack trace:
#0 C:\Users\(11): delilnik(13, 0)
#1 {main}
  thrown in C:\Users\ on line 5

Postopek je končan.

Fatal error: Uncaught Exception: Deljenje z ničlo. in C:\Users\:5
Stack trace:
#0 C:\Users\(11): delilnik(13, 0)
#1 {main}
  thrown in C:\Users\ on line 5

Process finished with exit code 255
            

Kljub temu, da nam izpiše "Postopek je končan", nam tudi vrže napako, ker manjka blok catch za vrženo izjemo, kar pomeni, da izjema ne bo pravilno ujeta in obravnavana, preden se izvede končni blok.

Objekt Exception

Objekt Exception vsebuje informacije o napaki ali nepričakovanem vedenju, na katerega je naletela funkcija.

Sintaksa:
new Exception(sporočilo, koda, izjema)
    
Parameter Opis
sporočilo Neobvezno. Niz, ki opisuje, zakaj je bila izjema vržena.
koda Neobvezno. Celo število, ki ga je mogoče uporabiti za preprosto razlikovanje te izjeme od drugih istega tipa.
izjema Neobvezno. Če je bila ta izjema vržena v bloku catch druge izjeme je priporočljivo, da to izjemo posredujemo v ta parameter.

Metode

Izjeme uporabljajo funkcije in metode za pošiljanje informacij o napakah in nepričakovanem vedenju. Pri lovljenju izjeme naslednja tabela prikazuje nekatere metode, ki jih je mogoče uporabiti za pridobivanje informacij o izjemi. Objekt Exception nima javnih lastnosti, ima pa zasebne in zaščitene lastnosti, v katere je mogoče zapisati ali prebrati z uporabo konstruktorja in metod.

Metoda Opis Primer
Exception() Konstruktor objekta Exception. Glej primer
getCode() Vrne kodo izjeme. Glej primer
getFile() Vrne celotno pot datoteke, v kateri je bila izjema vržena. Glej primer
getLine() Vrne številko vrstice, ki je povzročila izjemo. Glej primer
getMessage() Vrne niz, ki opisuje zakaj je bila izjema vržena. Glej primer
getPrevious() Če je to izjemo sprožila druga izjema, vrne prejšnjo izjemo, drugače ne vrne ničesar. Glej primer
getTrace() Vrne matriko z informacijami o vseh funkcijah, ki so se izvajale v času, ko je bila vržena izjema. Glej primer
getTraceAsString() Vrne iste informacije kot getTrace(), vendar v nizu. Glej primer

Hvala za obisk! Dodajam politiko zasebnosti.

© 2024 Vse pravice pridržane.

Donirajte preko PayPal ADMIN