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:
2
3
4
5
6
7
8
9
10
11
12
13
14
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:
2
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:
2
3
4
5
6
7
8
9
10
11
12
13
14
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:
We zien dat de verdere uitvoer van het script inderdaad helemaal gestopt is. De echo op regel 13 wordt ook niet meer weergegeven.
Inhoudsopgave
- Inleiding
- Weergave en interpretatie van PHP fouten
- Basis foutafhandeling met die()
- Een flexibelere manier: trigger_error()
- Foutafhandeling en controle van variabelen
- Een eigen foutafhandeling functie
- Exceptions in PHP 5
- Gedetailleerde foutinformatie verkrijgen
- Uitgebreide foutafhandeling met gebruik van foutco
- Uitbreiden van de standaard Exception klasse
- Slotwoord en referenties