Il me semble que ce sujet est très étrange et confus. Quelqu'un pourrait-il m'éclairer ?
Définitivement. Je ne suis pas un utilisateur de PHP, mais je peux avoir une petite idée après avoir travaillé avec try/catch en ActionScript, Java et JavaScript. Gardez à l'esprit que les différents langages et plateformes encouragent différentes utilisations de try/catch. Cela dit...
Les seules fois où je recommande l'utilisation de try/catch sont si vous utilisez une fonction du langage natif qui
- Peut lancer une erreur/exception
- Il ne vous donne aucun outil pour détecter si vous êtes sur le point de faire quelque chose de stupide qui causerait cette erreur/exception. Par exemple, en ActionScript, la fermeture d'un chargeur qui n'est pas ouvert entraînera une erreur, mais le chargeur n'a pas de propriété isOpen à vérifier et vous êtes donc obligé de l'envelopper dans un try/catch pour faire taire une erreur qui, autrement, n'aurait aucun sens.
- L'erreur/exception est vraiment sans signification.
Prenons les exemples que vous avez cités et voyons comment ils correspondent à cette liste.
J'ai lu quelqu'un qui disait que nous devrions utiliser les blocs try-catch uniquement pour éviter les erreurs fatales.
Dans le cas de la fonction loader.close() de AS, c'est un bon conseil. C'est une erreur fatale, et tout cela à partir d'un faux pas autrement trivial. D'un autre côté, pratiquement TOUTES les erreurs dans AS mettront votre application à l'arrêt. Les envelopperiez-vous toutes dans un try/catch ? Absolument pas ! Une "erreur fatale" est fatale pour une raison. Elle signifie que quelque chose de terriblement mauvais s'est produit et qu'il est imprudent pour l'application de continuer dans un état potentiellement "indéfini". Il est préférable de savoir qu'une erreur s'est produite et de la corriger plutôt que de la laisser passer.
J'ai lu quelqu'un d'autre dire que nous devrions l'utiliser seulement sur des erreurs inattendues.
C'est encore pire. Ce sont vraisemblablement les erreurs que vous ne voulez PAS faire taire, car les faire taire signifie que vous ne les trouverez jamais. Peut-être que vous ne les faites pas taire, cependant... peut-être que vous les enregistrez. Mais pourquoi essayer/attraper/enregistrer/continuer comme si rien ne s'était passé, permettant au programme de s'exécuter dans une condition potentiellement dangereuse et inattendue ? Laissez l'erreur vous frapper et réparez-la. Il n'y a rien de plus frustrant que d'essayer de déboguer une erreur dans un programme que quelqu'un d'autre a écrit parce qu'il a tout enveloppé dans un bloc try/catch et a négligé d'enregistrer.
D'autres disent simplement que les blocs try-catch devraient être utilisés partout car ils peuvent également être étendus (extension de la classe Exception).
Il y a un mérite potentiel à cela si vous êtes celui qui lance l'erreur, et que vous essayez de vous alerter sur une situation exceptionnelle dans votre programme... mais pourquoi essayer/attraper votre propre erreur ? Laissez-la vous donner un coup de pied dans les dents, puis corrigez-la de manière à ne plus avoir besoin de lancer l'erreur.
Enfin, quelqu'un dit que les blocs try-catch de PHP sont totalement inutiles car ils sont très mal implémentés. (Sur ce point, j'ai trouvé une belle question sur les performances).
Peut-être bien. Mais je ne peux pas répondre à cette question.
Alors... c'est peut-être une question un peu religieuse, et je suis certain que les gens ne seront pas d'accord avec moi, mais de mon point de vue particulier, ce sont les leçons que j'ai apprises au fil des ans sur try/catch.