E-gradiva > Računalništvo > Programiranje > Načrtovanje in razvoj spletnih aplikacij > PHP > Delo z napakami in izjemami

Prijava

Delo z napakami in izjemami

Delo z napakami
(angl. "error handling")

 

 

Delo z napakami – primer die()

 

<?php

// primer 1: javi navadno napako

fopen("datoteka.txt", "r");

echo '<br /><br />';

 

// primer 2: prilagodi izpis napake

if(!file_exists("datoteka.txt")) {

    die("Datoteka ne obstaja!");

} else {

    $datoteka = fopen("datoteka.txt", "r");

}

?>

Warning: fopen(datoteka.txt) [function.fopen]: failed to open stream: No such file or directory in E:\www\test\test.php on line 24

Datoteka ne obstaja!

 

Delo z napakami – primer lastne obravnave napak

 

<?php

//funkcija za delo z napakami

function mojErrorHandler($errno,$errstr,$errfile,$errline) {

     echo "<b>Pojavila se je napaka:</b> [$errno] $errstr "

            ."v vrstici $errline";

}

//nastavimo svoj "handler" za delo z napakami

set_error_handler('mojErrorHandler');

 

//sprozimo napako

echo $test;

?>

Pojavila se je napaka: [8] Undefined variable: test v vrstici 32

Delo z napakami – primer beleženja napak

 

 

<?php

//funkcija za delo z napakami

function customError($errno, $errstr) {

            echo "<b>Napaka:</b> [$errno] $errstr<br />";

            error_log("Napaka: [$errno] $errstr",1, "info@studionp.net","From: janez.novak@email.si");

}

//nastavi "error handler"

set_error_handler("customError", E_USER_WARNING);

$test = 2;

if ($test > 1) {

  //sproži napako

 trigger_error("Vrednost mora biti > 1" , E_USER_WARNING);

}

?>

Napaka: [512] Vrednost mora biti > 1

 

Delo z izjemami (angl."exception handling")

 

 

Delo z izjemami – primer

 

<?php

function preveriSt($st) {

    if($st > 1) {

        throw new Exception("Vrednost mora biti 1 ali manj.");

    }

    return true;

}

 

try { //v try pričakujemo izjemo

    preveriSt(2);

    //v primeru izjeme se spodnje ne izpiše

    echo 'Če vidite tole, je številka 1 ali manj.';

}

catch(Exception $ex) { //lovimo izjemo

    echo 'Izjema: ' . $ex->getMessage();

}

?>

Izjema: Vrednost mora biti 1 ali manj.