PHP errors catchen

Status
Niet open voor verdere reacties.

bn2vs

Terugkerende gebruiker
Lid geworden
18 aug 2007
Berichten
1.705
Hey,

Is er een manier om in PHP errors op te vangen?

Alvast bedankt :)

Cheers
BN
 
Throw new zuchtException("error != exception");
 
het voorbeeld in de link die ik heb gegeven:

Code:
<?php
function inverse($x) {
    if (!$x) {
        throw new Exception('Division by zero.');
    }
    else return 1/$x;
}

try {
    echo inverse(5) . "\n";
    echo inverse(0) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

// Continue execution
echo 'Hello World';
?>

Output:

0.2
Caught exception: Division by zero.
Hello World

het stuk in try{} word eerst uitgevoerd, maar wanneer er een error/exception plaatsvind, wordt de code in catch{} uitgevoerd. Je kan evt. finally{} erbij zetten, dit wordt altijd uitgevoerd, ongeacht of er errors zijn.
 
Hey,

try-catch blokken catchen enkel EXCEPTIONS, maar geen ERRORS.

Probeer dit eens uit. Gegarandeerd dat je een fatal error krycht, identiek resultaat als wanneer je de try-catch blok gewoon weg laat.

Code:
try {
    bogus_function();
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

Cheers
BN
 
Hey,

Ik heb zowel php.net als google al geraadpleegd voordat ik het vroeg. Ik ben niet zo tam om het anderen voor me te laten oplossen als ik het zelf kan vinden.

Cheers
BN
 
Hey,

Ik heb zowel php.net als google al geraadpleegd voordat ik het vroeg. Ik ben niet zo tam om het anderen voor me te laten oplossen als ik het zelf kan vinden.

Cheers
BN

Okee ;) Het was even voor de zekerheid omdat veel mensen niet de moeite doen om Google raad te plegen :rolleyes:
 
Ja, dat is inderdaad spytig. Zal het volgende x dat ik een topic maak ook ff vermelden :)
 
Dus je kan ook niets met set_error_handler()?

Dan kun je zelf aangeven wat er bij een error moet gebeuren als ik het goed lees.
 
Hey,

Dat zou ook andere delen van de code beïnvloeden - wat het gebruik ervan gebruik uitsluit. Kan ik spytig genoeg dus niet gebruiken :(

Cheers
 
Waarom beïnvloedt dat je code?
Het zorgt er alleen voor dat de foutmelding op jouw manier wordt afgehandeld.

Een normale error-handler geeft gewoon de foutmelding als tekst weer.
 
Tuurlijk kan het wel met set_error_handler().

Check http://nl2.php.net/set_error_handler

Als het goed is, is er zelfs een manier om na het stuk waar je je custom-error wilt, de errors weer door de standaard handler te 'handlen'.

EDIT: Heb het ooit zo gemaakt dat alle errors in een log geschreven worden (fwrite()), zodat er niks weergegeven hoeft te worden. Hoef je alleen je log maar te controleren ;
EDIT 2: Zet in je error-handler liever geen mail(), grapjassen kunnen je servers overvoeren, omdat mail() voor elk mailtje (elke error) de mailsocket opent en sluit.
EDIT 3: Of het bovenstaande kan je eigen schuld zijn, als er veel errors in je script staan ;)
 
Laatst bewerkt:
Hey,

set_error_handler() onderschept toch alle errors, niet enkel die by een bepaald stuk code?

Cheers
 
Voor zover ik lees slaat het alleen op het bestand waarom je dit zet.

Anders kun je restore_error_handler() aan het einde oproepen om het terug te draaien.
 
Aha ok, met dat zou het lukken :)

Bedankt voor de help, probleem opgelost :)
 
Ja, je kunt bijv. een stuk code schrijven, dan set_error_handler() gebruiken, dan de code waar je de custom error wilt, dan restore_error_handler() en dan de rest waar je default errors wilt ;)

EDIT: klik even hier, of rechtonderin op 'Vraag is opgelost', zodat er niemand voor niks naar (dit/deze?) topic komt ;)
 
Laatst bewerkt:
Hey,

Ik heb er al op geklikt?

Cheers
 
Oow dan heb ik niks gezegd, maar bij mij stond er nog 'Vraag niet beantwoord', daarom zei ik het ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan