Loading:


    set_error_handler()

    set_error_handler(callback $ error_handler [, int $ error_types])

     

    Ustawia zdefiniowane przez użytkownika funkcje obsługi błędów w skrypcie.

    Ta funkcja może być użyta do określenia własnego sposobu obsługi błędów podczas uruchomienia, na przykład w aplikacjach, w których musisz zrobić sprzątania danych / plików, gdy dzieje się krytyczny błąd, lub gdy chcesz wywołać błąd w pewnych warunkach (przy użyciu trigger_error ()).



    Ważne jest, aby pamiętać, że standard obsługi błędów PHP jest całkowicie pomijany. error_reporting () ustawienia będą miały żadnego wpływu i obsługi błędów zostanie wywołana bez względu - jednak wciąż jeste w stanie odczytać aktualną wartość error_reporting i działa właściwie. Szczególnie zwrócić uwagę na to, że to będzie wartość 0, jeżeli oświadczenie, że przyczyną błędu była prepended przez @ błędu kontroli operatora.


    Następujące rodzaje błędów nie może być traktowane z funkcji zdefiniowanych przez użytkownika: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, a większość E_STRICT poruszonych w pliku gdzie set_error_handler () jest wywoływana.



    Jeśli wystąpią błędy, zanim skrypt jest wykonany (np. na temat plików) niestandardowej obsługi błędów nie może być nazywany, gdyż nie jest zarejestrowany w tym czasie.

     

    Funkcja musi przyjąć dwa parametry: kod błędu, i ciąg opisujący błąd. Następnie istnieją trzy opcjonalne parametry, które mogą być dostarczane: nazwa pliku, w którym wystąpił błąd, numer wiersza, w którym wystąpił błąd, i kontekst, w którym wystąpił błąd (tablica, która wskazuje na aktywny symbol tabeli w punkcie na błąd). Funkcja może być pokazywana jako:

         handler (int $ errno, $ string errstr [, string $ errfile [, int $ errline [, array $ errcontext]]])

         errno
             Pierwszy parametr, errno, zawiera poziom błędu podniesiony, jako liczba całkowita.
         errstr
             Drugi parametr, errstr, zawiera komunikat o błędzie, jako łańcuch znaków.
         errfile
             Trzeci parametr jest opcjonalny, errfile, które zawiera nazwę pliku, że błąd został już poruszony w jako ciąg znaków.
         errline
             Czwarty parametr jest opcjonalny, errline, który zawiera numer wiersza z błędem była poruszana na jako liczba całkowita.
         errcontext
             Piąty parametr jest opcjonalny, errcontext, którya jest tablicą, który wskazuje na aktywny symbol tabeli w momencie wystąpienia błędu. Innymi słowy, errcontext będzie zawierać tablicę wszystkich zmiennych, które istniały w zakresie błądu.

     

    Kompatybilność: PHP4, PHP5.



    Napisz Artyku³

    Listing

    <?php
    //własna funkcja o błędzie
    function myErrorHandler($errno, $errstr, $errfile, $errline)
    {
        switch ($errno) {
        case E_USER_ERROR:
            echo "<b>Moje ostrzeżenie:</b> [$errno] $errstr<br />\n";
            echo "  Fatalny błąd w linii $errline w pliku $errfile";
            echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
            echo "Zamykanie procesu...<br />\n";
            exit(1);
            break;

        case E_USER_WARNING:
            echo "<b>Moje ostrzeżenie</b> [$errno] $errstr<br />\n";
            break;

        case E_USER_NOTICE:
            echo "<b>Moja informacja:</b> [$errno] $errstr<br />\n";
            break;

        default:
            echo "Ne rozpoznałem typu błędu: [$errno] $errstr<br />\n";
            break;
        }

        /* nie wykonuje się ządne ostrzeżenie, zwraca TRUE */
        return true;
    }

    // testowanie błędów
    function scale_by_log($vect, $scale)
    {
        if (!is_numeric($scale) || $scale <= 0) {
            trigger_error("log(x) for x <= 0 nie nie zdefiniowane: scale = $scale", E_USER_ERROR);
        }

        if (!is_array($vect)) {
            trigger_error("Nie właściwa wartość wejściowa w array, numer oczekiwany", E_USER_WARNING);
            return null;
        }

        $temp = array();
        foreach($vect as $pos => $value) {
            if (!is_numeric($value)) {
                trigger_error("Wartość na pozycji $pos nie jest numerem 0 (zero)", E_USER_NOTICE);
                $value = 0;
            }
            $temp[$pos] = log($scale) * $value;
        }

        return $temp;
    }

    // ustawia definicje użytkownika o obsłudze błedów
    $old_error_handler = set_error_handler("myErrorHandler");

    // na dole skrypty które zwracją nasze błędy
    echo "vector a\n";
    $a = array(2, 3, "foo", 5.5, 43.3, 21.11);
    print_r($a);

    // teraz generujemy drugą tablicę
    echo "----\nvector b - a notice (b = log(PI) * a)\n";
    /* Wartośc na pozycji nr $pos nie jest numerem */
    $b = scale_by_log($a, M_PI);
    print_r($b);

    // Tu jest problem, dodajemy string do tablicy
    echo "----\nvector c - a warning\n";
    /* nie właściwy element tablicy */
    $c = scale_by_log("not array", 2.3);
    var_dump($c); // NULL

    // to jest krytyczny błąd log od zera oraz ujemnej liczby jest nie zdefiniowany
    echo "----\nvector d - fatal error\n";
    /* log(x) for x <= 0 jest nie zdefiniowany, użyłeś: scale = $scale" */
    $d = scale_by_log($a, -2.5);
    var_dump($d); // nigdy nie osiągnie
    ?>

    //zwróci:

    vector a
    Array
    (
        [0] => 2
        [1] => 3
        [2] => foo
        [3] => 5.5
        [4] => 43.3
        [5] => 21.11
    )
    ----
    vector b - a notice (b = log(PI) * a)
    <b>Moje ostrzeżenie:</b> [1024] Wartość na pozycji nr 2 nie jest numere używa 0 (zero)<br />|>
    Array
    (
        [0] => 2.2894597716988
        [1] => 3.4341896575482
        [2] => 0
        [3] => 6.2960143721717
        [4] => 49.566804057279
        [5] => 24.165247890281
    )
    ----
    vector c - a warning
    <b>Moje ostrzeżenie</b> [512] Nie właściwa wartość wejściowa w array, numer oczekiwany<br />
    NULL
    ----
    vector d - fatal error
    <b>Mój błąd:</b> [256] log(x) for x <= 0 jest nie zdefiniowany, użyłeś: scale = -2.5<br />
      Fatalny błąd w linii 35 w pliku trigger_error.php, PHP 5.2.1 (FreeBSD)<br />
    Zamykam...<br />




    Dodano przez: divix
    Ranga: Administrator serwisu Punktów: 0
    Komentarze użytkowników
      • Tre¶æ komentarza
        Kod do komentarza (opcjonalnie)
        PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
        Autor
        Token
        token

         

         








    funkcje.net
    Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2025 v.1.5 | design: diviXdesign & rainbowcolors