V. Emulation d'exception avec PHP4▲
Le principe des exceptions est d'envoyer un signal défini par le développeur en fonction d'un stimuli choisi par le développeur qui impliquera un traitement écrit par le développeur. Les exceptions sont ainsi totalement définies par le développeur. Les erreurs sont à l'inverse totalement gérées par PHP. Cependant, le langage PHP définit plusieurs fonctions permettant au développeur de personnaliser cette gestion. Nous avons déjà vu set_error_handler, qui permet de redéfinir la fonction appelée lors d'une erreur (qui correspondrait à l'intérieur de notre bloc catch). Il nous reste à trouver comment "soulever" une erreur comme on soulevait des exceptions. Pour cela, on utilise la fonction trigger_error qui, lorsqu'elle est appelée, génère un message d'erreur.
function MyErrorHandler($code
,
$msg
,
$file
,
$line
)
{
echo '
div
style
=
"
color
:
red
;
"
>
'
.
$msg
.
'
<
/
div
>
'
;
}
set_error_handler('
MyErrorHandler
'
);
if ( !
@
fopen() )
{
trigger_error('
Impossible
d
\'
ouvrir
le
fichier
'
,
E_USER_ERROR);
}
On peut préciser en second paramètre un niveau d'erreur. Les choix possibles sont E_USER_NOTICE, E_USER_WARNING, E_USER_ERROR. Par défaut, l'erreur sera de type E_USER_NOTICE.