Post by Olivier MassonQuel est l'intérêt de try catch par rapport à un trigger_error utilisé
avec set_error_handler.
Si tu me permets, la question est maladroite. trigger_error est
plutôt l'équivalent de throw, et set_error_handler l'équivalent du try
catch.
Post by Olivier MassonJ'utilise la 2nd technique, et on m'a dit que c'était puant (ici même il
me semble) sans trop d'explications - le développeur considère toujours
que ce qu'il a appris n'est qu'axiome et que toute autre proposition est
forcément erronée, donc la discussion constructive est rarement possible -)
Oh non, ici c'est clairement une question de préférence, et l'usage
de l'une ou l'autre technique, voir la combinaison des deux, est une
affaire de goût.
Historiquement, puisque PHP est un langage procédural, il n'y avait
pas de notion d'exception comme il y en a dans les langages orientés
objet. Donc il y a le mécanisme d'enregistrement des erreurs avec
trigger_error. C'est le système qui est intégré à PHP de base, et qui
est donc la voie naturelle de traitement des erreurs. Et vu que les
mécanismes d'erreur de base sont basés dessus, il est incontournable.
Les exceptions sont venues avec l'intégrations des fonctionnalités
orientées objet dont elles font partie. Et ce, sans s'y substituer. Le
mécanisme d'exception a deux avantages sur la gestion par le système
d'erreurs natif :
- la gestion de l'erreur peut être plus facilement déléguée, elle n'a
pas besoin d'être gérée immédiatement
- l'exception peut comporter une charge sémantique qui va faciliter
le traitement de l'erreur (si l'exception est une erreur)
Personnellement je préfère les exceptions, car on peut déléguer la
gestion d'erreur à un niveau d'abstraction supérieur, qui va décider de
ce qu'il faut faire.