net-board.net Archiv

Normale Version: @Errors mit eigenem Handler
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Servus NetBoard´ler,

mal wieder grübel ich über einen mir mysteriös vorkommenden Fehler.
Ich arbeite bei meinem CMS ja mit der Smrty Engine. Nun versucht diese aus purer Vorsicht jede Caching Datei vor dem überschrieben zu löschen ( einige OS scheinen da mit PHP ihre Probleme zu haben )
Nun habe ich einen eigenen Errorhandler geschreiben
Code:
function alter_error_handler($errno,$errstr,$errfile,$errline)
{
    try
    {
        echo'<div style="padding:5px;margin:10px;width:600px;position:relative;top:0px;background-color:#CC0033;">Ein Error ist in '.$errfile.' in Linie '.$errline.' aufgetaucht :<br />'.$errstr.'</div>';
        if($errno!=8)die();
    }
    catch(Exception $e)
    {
        die('Error');
    }
}
set_error_handler('alter_error_handler',error_reporting());
Bis hierher extrem langwelig da die Funktion ja auch nicht so der Hammer ist Big Grin
Nun werden allerdings sämtliche @unlink('Datei/die/nicht/da/ist.php') Fehler auch ausgegeben.

Wie man am @ deutlich sehen kann ist das ja aber nicht erwünscht.
Ist das jetzt einfach so, oder hab ich da irgend was schlaues übersehen im Manual ?

P.S.:
Wenn ich den Errorhandler auskommentier ist der Fehler weg also wirds jawohl an dem Guten liegen . . . ^^
Entschuldigt den Doppelpost, aber ich bin mal so frei zu erläutern warum ich blind bin.

Im Manual steht folgendes :
Zitat:Vergessen Sie bei der Implementation auf keinen Fall, dass auf diese Weise die standardmäßige PHP-Fehlerbehandlung vollkommen umgangen wird! Die Einstellungen der Funktion error_reporting() haben keine Auswirkung, und Ihre eigene Fehlerbehandlungsroutine wird ohne Rücksicht darauf aufgerufen. Sie können jedoch immer noch den aktuellen Wert von error_reporting lesen und entsprechend handeln. Es ist besonders zu beachten, dass dieser Wert 0 sein wird, falls die Anweisung, die den Fehler verursacht hat, mit dem @ Fehler-Kontroll-Operator versehen ist.