Beispiele

Unten können wir ein Beispiel dafür sehen, wie die Fehlercode-Funktionen in PHP benutzt werden. Wir definieren eine Fehlerfunktion, die die Information unter Verwendung des XML-Formates in einer Datei speichert und diese per E-Mail dem Entwickler sendet, wenn ein schwerer Fehler in der Programmlogik auftritt.

Beispiel #1 Fehlerbehandlung in einem Script

<?php
// Wir werden unsere Fehler selbst behandeln
error_reporting(0);

// Benutzerdefinierte Fehlerfunktion
function userErrorHandler($errno$errmsg$filename$linenum$vars
{
    
// Zeitstempel für den Fehlereintrag
    
$dt date("Y-m-d H:i:s (T)");

    
// Definiert ein assoziatives Array für den Fehler
    // Tatsächlich sollten wir nur
    // E_WARNING, E_NOTICE, E_USER_ERROR,
    // E_USER_WARNING und E_USER_NOTICE beachten.
    
$errortype = array (
                
E_ERROR              => 'Fehler',
                
E_WARNING            => 'Warnung',
                
E_PARSE              => 'Parser-Fehler',
                
E_NOTICE             => 'Hinweis',
                
E_CORE_ERROR         => 'Kern-Fehler',
                
E_CORE_WARNING       => 'Kern-Warnung',
                
E_COMPILE_ERROR      => 'Kompilierungsfehler',
                
E_COMPILE_WARNING    => 'Kompilierungswarnung',
                
E_USER_ERROR         => 'Benutzerfehler',
                
E_USER_WARNING       => 'Benutzerwarnung',
                
E_USER_NOTICE        => 'Benutzerhinweis',
                
E_STRICT             => 'Laufzeitwarnung',
                
E_RECOVERABLE_ERROR  => 'Abfangbarer fataler Fehler'
                
);
    
// Satz von Fehlern für welche ein Eintrag gespeichert wird.
    
$user_errors = array(E_USER_ERRORE_USER_WARNINGE_USER_NOTICE);
    
    
$err "<errorentry>\n";
    
$err .= "\t<datetime>" $dt "</datetime>\n";
    
$err .= "\t<errornum>" $errno "</errornum>\n";
    
$err .= "\t<errortype>" $errortype[$errno] . "</errortype>\n";
    
$err .= "\t<errormsg>" $errmsg "</errormsg>\n";
    
$err .= "\t<scriptname>" $filename "</scriptname>\n";
    
$err .= "\t<scriptlinenum>" $linenum "</scriptlinenum>\n";

    if (
in_array($errno$user_errors)) {
        
$err .= "\t<vartrace>" wddx_serialize_value($vars"Variablen") . "</vartrace>\n";
    }
    
$err .= "</errorentry>\n\n";
    
    
// Zum Test:
    // echo $err;

    // Speicher den Fehler im Log und schicke mir eine E-Mail falls es ein kritischer Benutzerfehler ist.
    
error_log($err3"/usr/local/php4/error.log");
    if (
$errno == E_USER_ERROR) {
        
mail("phpdev@example.com""Critical User Error"$err);
    }
}


function 
distance($vect1$vect2
{
    if (!
is_array($vect1) || !is_array($vect2)) {
        
trigger_error("Falsche Parameter, Arrays erwartet"E_USER_ERROR);
        return 
NULL;
    }

    if (
count($vect1) != count($vect2)) {
        
trigger_error("Die Vektoren müssen die selbe Dimension besitzen."E_USER_ERROR);
        return 
NULL;
    }

    for (
$i=0$i<count($vect1); $i++) {
        
$c1 $vect1[$i]; $c2 $vect2[$i];
        
$d 0.0;
        if (!
is_numeric($c1)) {
            
trigger_error("Koordinate $i im Vektor 1 ist keine Nummer, verwende stattdessen Null."
                            
E_USER_WARNING);
            
$c1 0.0;
        }
        if (!
is_numeric($c2)) {
            
trigger_error("Koordinate $i im Vektor 2 ist keine Nummer, verwende stattdessen Null"
                            
E_USER_WARNING);
            
$c2 0.0;
        }
        
$d += $c2*$c2 $c1*$c1;
    }
    return 
sqrt($d);
}

$old_error_handler set_error_handler("userErrorHandler");

//Undefinierte Konstante, generiert eine Warnung
$t I_AM_NOT_DEFINED;

// Definiere einige "Vektoren"
$a = array(23"foo");
$b = array(5.54.3, -1.6);
$c = array(1, -3);

// Benutzerfehler erzeugen
$t1 distance($c$b) . "\n";

// Einen weiteren Benutzerfehler erzeugen
$t2 distance($b"i am not an array") . "\n";

// Eine Warnung erzeugen
$t3 distance($a$b) . "\n";

?>

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

Grundlagen von Views in MySQL

Views in einer MySQL-Datenbank bieten die Möglichkeit, eine virtuelle Tabelle basierend auf dem Ergebnis einer SQL-Abfrage zu erstellen. ...

admin

Autor : admin
Kategorie: mySQL-Tutorials

Definition von Stored Procedures - eine Einführung

Stored Procedures sind vordefinierte SQL-Codeblöcke, die in einer Datenbank gespeichert sind und bei Bedarf aufgerufen werden können. ...

Bernie

Autor : ebiz-consult GmbH & Co. KG
Kategorie: mySQL-Tutorials

Wie kann man komplexe Abfragen mit SQL-Querys In MySQLi effektiv durchführen?

In diesem MySQL-Tutorial wird erklärt, wie komplexe SQL-Abfragen in MySQLi effizient durchgeführt werden können. Wir werden uns mit verschiedenen Aspekten der Datenbankabfrage beschäftigen und spezifische Methoden kennenlernen. ...

TheMax

Autor : TheMax
Kategorie: mySQL-Tutorials

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

Berechnungen durchführen

Hallo liebe Forenmitglieder, meine erste frage ist zum Aufbau meiner kleinen Berechnungswebseite, nichts kommerzielles, soll nur eine Anwendung f ...

Geschrieben von matze511 am 21.04.2024 21:42:37
Forum: PHP Developer Forum
Professioneller Webentwickler & Webdesigner

Of course, here is the translation: Hello, Thank you for your interest in the long-term project. Your extensive skills and experience in web dev ...

Geschrieben von Athelstan am 15.04.2024 09:25:39
Forum: Jobgesuche
Wir stellen unsere SEO-Agentur vor

Hallo In der heutigen digitalen Welt war es für Unternehmen noch nie so einfach, ihre Reichweite weltweit zu vergrößern. Wenn Sie außerhalb I ...

Geschrieben von thomasmuller am 14.04.2024 07:18:33
Forum: User stellen sich vor
Spielplan für 4 Gruppen zu je 6 Teams auf 2 Feldern

Hallöchen zusammen, ich versuche derzeit unseren Excel-Spielplan in PHP zu überführen. Eigentlich bin ich auch shon fertig - wenn da nicht dies ...

Geschrieben von derH0st am 11.04.2024 15:58:37
Forum: PHP Developer Forum