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.