Basis foutafhandeling met die()
Het eerste voorbeeld van foutafhandeling dat ik zal bespreken is het gebruik van de die() functie. Zoals de naam van deze functie al doet vermoeden, stopt deze functie de uitvoer van de rest van het script en toont een foutmelding op het scherm.
Laten we kijken naar een voorbeeld waarin we met de functie file_get_contents() proberen om de inhoud van een bestand op te halen. Omdat we de fout willen zien, zijn we natuurlijk geinteresseerd in wat er gebeurd als het bestand niet bestaat.
2
3
4
5
6
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$content = file_get_contents('bestand.txt');
?>
Als bestand.txt niet bestaat, zal de volgende foutmelding gegeven worden:
Nu is dit natuurlijk niet echt een nette foutmelding die je aan je gebruikers zou willen tonen. Dat is als volgt op te lossen:
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
{
die('FOUT: Het gekozen bestand bestaat niet.');
}
echo 'Hello World!';
?>
We controleren nu eerst of het bestand wel bestaat. Als dat niet het geval is stoppen we met die() het script en geven we een foutmelding. De output die we nu op het scherm zien is:
Dit voorbeeld laat zien hoe je op een hele eenvoudige manier, een zelf geschreven foutmelding kunt weergeven. Ook zien we dat de verdere uitvoer inderdaad gestopt wordt, de echo op regel 13 wordt niet uitgevoerd. Later in deze tutorial zullen we veel uitgebreidere voorbeelden zien.
Een ander voorbeeld waar de functie die() veel gebruikt wordt en waar de werking beter tot zijn recht komt, is bij het uitvoeren van een sql query. Als de query mislukt, zal PHP namelijk niet uit zichzelf een foutmelding geven, deze zul je zelf moeten opvragen met de functie mysql_error().
2
3
4
5
6
7
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$sql = "SELECT * FROM tabel";
$result = mysql_query($sql) or die('FOUT: '.mysql_error());
?>
Als de query nu mislukt, en mysql_query() dus FALSE teruggeeft, zal 'or die()' ervoor zorgen dat de foutafhandeling in werking treedt. In dit geval zal de verdere uitvoer van het script gestopt worden en zal er een foutmelding gegeven worden.
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