Avatar billede qualon1 Nybegynder
22. august 2006 - 22:54 Der er 5 kommentarer

Error handler fanger ikke parse og fatal error

Hej

Jeg er ved at lave et system som selv styrer sine fejl beskeder, men jeg kan ikke få den til at fange de beskeder af typerne fatal error og parse error. Er det muligt at gøre sådan at man kan fange dem?

<?php

$old_error_handler = set_error_handler("userErrorHandler");

function userErrorHandler ($errno, $errmsg, $filename, $linenum, $vars) {


    $errortype = array (
                1  =>  "Error",
                2  =>  "Warning",
                4  =>  "Parsing Error",
                8  =>  "Notice",
                16  =>  "Core Error",
                32  =>  "Core Warning",
                64  =>  "Compile Error",
                128 =>  "Compile Warning",
                256 =>  "User Error",
                512 =>  "User Warning",
                1024=>  "User Notice"
                );

    $user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);
               
    $err = "type: ".$errortype[$errno]." #$errno: $errmsg\n";
    $err .= "file: ";
    if(DEBUG) {
        $err .= "<a href=\"".WEBSITE_PATH."include/showSource.inc.php?file=".$filename."&line=".$linenum."&prev=10&next=10&pass=".md5($filename."_".$linenum."_10_10_dontshowsourcetoeveryone")."\" target=_blank>";
    }
    $err .= $filename."</a> @ line $linenum\n";
   
    if (in_array($errno, $user_errors))
        $err .= "vartrace: ".wddx_serialize_value($vars,"Variables")."\n";
    if($errortype[$errno] != "Notice") {
        if(GLOBAL_MESSAGES) {   
            $_SERVER[messages]->addMsg("<b>Error console:</b> ".$err."", "error");   
        } else {
            $message = new message();
            $message->addMsg("<b>Error console:</b> ".$err."", "error");
            echo $message->write();
        }
    }
}

?>
Avatar billede erikjacobsen Ekspert
22. august 2006 - 23:25 #1
Det er vel klart nok at parsefejl ikke kan udløse din funktion, da koden ikke udføres før parsningen er færdig, og den derfor slet ikke er registreret. 

Hvilke "fatal error" tænker du på?
Avatar billede qualon1 Nybegynder
22. august 2006 - 23:34 #2
jeg tænker sådanne fatale fejl som at en funktion eller class ikke findes
Avatar billede erikjacobsen Ekspert
23. august 2006 - 11:32 #3
Ok, nej, jeg kender ikke til at du kan fange den slags fejl på den måde - men nu ved jeg heller ikke alt. 

Nogle gange kan du få udløst din errorhandler af kode i en eval("..."), men ikke alt, og du må eksperimentere. Og det er bestemt ikke en anbefaling.

Men altså, man lægger jo ikke kode til produktion, hvor der er syntaksfejl, eller hvor der mangler metoder. :)
Avatar billede fangel Nybegynder
23. august 2006 - 13:03 #4
"The following error types cannot be handled with a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and most of E_STRICT raised in the file where set_error_handler() is called."

Citat fra: http://dk.php.net/set_error_handler

-fangel
Avatar billede qualon1 Nybegynder
23. august 2006 - 13:42 #5
Okay så er der jo kke noget at gøre..
tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester