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 (php)
PHP script in nieuw venster Selecteer het PHP script
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 (php)
PHP script in nieuw venster Selecteer het PHP script
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 (php)
PHP script in nieuw venster Selecteer het PHP script
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 (php)
PHP script in nieuw venster Selecteer het PHP script
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.

« Lees de omschrijving en reacties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.