Mot-clé - exception

Fil des billets - Fil des commentaires

lundi 31 octobre 2011

include et exception

Parfois, il peut être utile d'obtenir une exception au lieu d'une erreur de type WARNING lorsque l'on tente en PHP d'utiliser un fichier inexistant à l'aide des instructions include ou include_once.

Pour y parvenir, le développeur a souvent recours à l'une des deux solutions suivantes :

  1. Soit il teste l'existence du fichier avant de l'inclure et lance une exception si le fichier demandé n'existe pas ;
  2. Soit il défini un gestionnaire d'erreurs qui transforme toutes les erreurs en exception ;

J'avoue ne pas être fan de la première, qui a l'inconvénient de ne pas gérer le cas ou le fichier est supprimé entre le moment ou son existence est vérifié et le moment ou il est effectivement inclus.

Certes, dans la grande majorité des cas, cette situation de compétition n'arrivera jamais, mais la probabilité existe pourtant bel et bien et devrait donc être gérée correctement.

Je ne suis pas non plus un adepte de la seconde car je ne désire pas forcément que toutes les erreurs générées par mon code soit transformées en exception.

Et en l'occurrence, je ne veux générer une exception uniquement que lorsque le fichier devant être inclus est introuvable.

J'ai donc cherché une alternative à ces deux solutions prenant en compte à la fois la situation de compétition et le fait que je ne veux une exception que lorsque le fichier demandé n'existe pas. 

Lire la suite

jeudi 8 juillet 2010

Les fermetures, c'est trop... fermé !

J'utilise actuellement intensivement les fermetures, plus connues sous leur dénomination anglaise closure, dans mes développements PHP.

Elles sont en effet extrêmement bien adapté à mon besoin, mais je viens de découvrir qu'elles ont un inconvénient de taille.

Lire la suite

jeudi 11 mars 2010

Erreur ou exception ?

L'un des apports majeurs de PHP 5.0 a été la gestion des exceptions.

Du coup, pendant un temps, la mode a été de transformer les erreurs classiques qu'il est possible de générer à l'aide de la fonction trigger_error() en exception, voir même de définir une fonction spécifique de gestion des erreurs à l'aide de set_error_handler() pour attraper les erreurs générées par PHP ou à l'aide de trigger_error() afin de les transformer en exception.

Si cette folie furieuse semble être passée, il en reste encore des traces, et il arrive bien souvent que je sois amené à voir du code qui, à mon sens, devrait générer une erreur au lieu d'une exception.

Lire la suite