Si une exception n’est pas écrite dans le fichier exception.log avec le modèle d’exception comme contexte, elle n’est pas reconnue et analysée correctement dans New Relic ou tout autre stockage de journal compatible avec un monologue PSR-3. La journalisation d’une partie seulement de l’exception (ou de l’enregistrer dans le mauvais fichier) entraîne des bogues en production lorsque les exceptions sont ignorées.
Gestion correcte des exceptions
La liste de contrôle suivante fournit des exemples illustrant la gestion correcte des exceptions.
Écrire dans le journal des exceptions
Écrivez dans le journal des exceptions selon le modèle suivant, quelles que soient les autres actions, sauf s’il y a une bonne raison de ne pas le faire.
Cette approche enregistre automatiquement le $e->getMessage dans le message du journal et l’objet $e dans le contexte, conformément à la norme de contexte PSR-3. Cette opération s’effectue en \Magento\Framework\Logger\Monolog::addRecord.
Désactiver le son des signaux
Désactivez le son des signaux en ne consignant pas les exceptions qui font partie du flux d’opérations prévu. Aucune action de suivi n’est nécessaire lorsque l’exception est rencontrée. Il n’est donc pas nécessaire de la consigner et de l’analyser lorsqu’elle se produit. Ajoutez un commentaire indiquant la raison pour laquelle les signaux sont désactivés et que cela est intentionnel. Combiner avec phpcs:ignore.
En règle générale, la journalisation est toujours prioritaire dans le code afin d’éviter les cas où une autre exception ou une erreur fatale est générée avant d’écrire dans le journal.
Les exemples suivants montrent une gestion incorrecte des exceptions.
Logique avant la journalisation
La logique avant la journalisation peut entraîner une autre exception ou une erreur irrécupérable, ce qui empêche la journalisation de l’exception et doit être remplacé par exemple correct.
Cette approche introduit des sauts de ligne dans le message, qui n’est pas conforme au RSP-3. L’exception , y compris la trace de la pile, doit faire partie du contexte du message pour s’assurer qu’il est correctement enregistré avec le message dans New Relic ou un autre stockage de journaux compatible avec les monologues PSR-3.
L’exception est rétrogradée vers une erreur, qui ne permet pas de transmettre un objet, mais uniquement une chaîne, d’où la getMessage(). Cela entraîne la perte de la trace et doit être remplacé par les exemples corrects affichés dans Écrire dans le journal des exceptions ou Rétrograder des exceptions.
L’omission de la ligne phpcs:ignore déclenche un avertissement dans PHPCS et ne doit pas transmettre votre CI. Cette valeur doit être remplacée par l’exemple correct illustré dans Désactiver le son.