Mam pytanie. Jak w php 5 można przechwycić Warning i Notice?
Zwykłe try{...}catch (Exception e){...} nie działa :/
Może set_error_handler
Co prawda takie rozwiązanie nie jest najładniejsze, ale dzięki niemu zauważyłem, że to co otrzymuję, to nie jest ani Warning, ani Notice, tylko jakieś jeszcze inne (errno=2).
Bawię się z simplexml i chcę zabezpieczyć się, przed wczytywaniem błędnie sformatowanego kodu xml. W najgorszym wypadku wyłącze warningi i będę wypisywał lakoniczne "błąd", nie podając dokładniej co jest nie tak :/
tak jak zauważył prgtw włącz error_handler
dla przykłądu ja robię tak, żebym był poinformowany o błędach jakie wystąpiły na stronie :D
function moja_obsluga_bledu($aErrorNo, $aErrorStr, $aFile, $aLine, $aContext){
$headers = "From: [email protected]\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$body = "Numer bledu: ".$aErrorNo."\nTresc bledu: ".$aErrorStr."\nPlik wystapienia bledu: ".$aFile."\nLinia wystapienia bledu: ".$aLine."\nContext: ".$aContext;
mail("[email protected]", "Błąd na stronie strona.pl", $body, $headers);
header('Location: error.php');
exit;
}
set_error_handler("moja_obsluga_bledu");
error_reporting(2048);
i już dostaje maila z informacja o bledzie. i nie musze prosic uzytkownika zeby mnie informowal o bledzie bo sam sobie to zrobie
@jmail:
Ja robię tak samo ale do maila dołączam jeszcze informacje, od których zależy budowanie strony przez parser:
$_GET, $_POST, PHP_VERSION (akurat u mnie niektóre skrypty chodzą na php4 a niektóre na php5)
Dołączenie tych danych pozwala łatwiej zlokalizować błąd i uaktualnić plik php.
Jak już w ten sposób, to należałoby również dołączyć $_SERVER i $_COOKIE