Foutafhandeling in PHP (Error Handling)

  1. Inleiding
  2. Weergave en interpretatie van PHP fouten
  3. Basis foutafhandeling met die()
  4. Een flexibelere manier: trigger_error()
  5. Foutafhandeling en controle van variabelen
  6. Een eigen foutafhandeling functie met set_error_handler()
  7. Exceptions in PHP 5
  8. Gedetailleerde foutinformatie verkrijgen met exceptions
  9. Uitgebreide foutafhandeling met gebruik van foutcodes
  10. Uitbreiden van de standaard Exception klasse
  11. Slotwoord en referenties
  12. Reacties op deze tutorial

Een flexibelere manier: trigger_error()

Zoals op de voorgaande pagina bleek, kan de die() functie gebruikt worden om een vrij ruwe manier van foutafhandeling toe te passen. Het script wordt gestopt en een foutmelding wordt gegeven. Maar vooral in de grotere scripts kan het vervelend zijn als zomaar het script onderbroken wordt, bijvoorbeeld als er nog een deel van de layout getoond moet worden.

De functie trigger_error() biedt ons al meer flexibiliteit. Het eerste grote voordeel is dat de uitvoer van het script gewoon doorgaat. Bekijk nu het volgende voorbeeld:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
ini_set
('display_errors''On');
error_reporting(E_ALL);

if(
file_exists('bestand.txt'))
{
    
$content file_get_contents('bestand.txt');
}
else
{
    
trigger_error('FOUT: Het gekozen bestand bestaat niet.');
}
echo 
'Hello World';
?>

De output die er nu gegeven wordt:
Code
1
2
Notice: FOUT: Het gekozen bestand bestaat niet. in C:\wamp\www\test.php on line 11
Hello World

We zien dat inderdaad de uitvoer van het script gewoon verder gaat. De foutmelding wordt gegeven, maar ook de echo op regel 13 wordt nog uitgevoerd.

De functie trigger_error accepteert ook een tweede parameter. Hiermee kunnen we het soort fout aangeven dat 'getriggerd' moet worden. De volgende parameters zijn gebruikelijk om mee te geven:
  • E_USER_ERROR - Een fatale fout waarbij de uitvoer van het script gestopt wordt
  • E_USER_WARNING - Een niet-fatale fout waarbij de uitvoer niet gestopt wordt
  • E_USER_NOTICE - Een mogelijke fout die de uitvoer van het script niet stopt

Standaard wordt een E_USER_NOTICE getriggerd. Het volgende voorbeeld laat een toepassing van deze tweede parameter zien:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
ini_set
('display_errors''On');
error_reporting(E_ALL);

if(
file_exists('bestand.txt'))
{
    
$content file_get_contents('bestand.txt');
}
else
{
    
trigger_error('FOUT: Het gekozen bestand bestaat niet.'E_USER_ERROR);
}
echo 
'Hello World';
?>

De output is nu als volgt:
Code
1
Fatal error: FOUT: Het gekozen bestand bestaat niet. in C:\wamp\www\test.php on line 11

We zien dat de verdere uitvoer van het script inderdaad helemaal gestopt is. De echo op regel 13 wordt ook niet meer weergegeven.

Vorige Volgende