Si no se escribe una excepción en el archivo exception.log con el modelo de excepción como contexto, no se reconoce ni se analiza correctamente en New Relic u otro almacenamiento de registro compatible con el monólogo PSR-3. El registro de solo una parte de la excepción (o el registro en el archivo incorrecto) provoca errores en la producción cuando se pasan por alto las excepciones.
Tratamiento correcto de excepciones
En la siguiente lista de comprobación se proporcionan ejemplos para mostrar el control correcto de excepciones.
Escribir en el registro de excepciones
Escriba en el registro de excepciones utilizando el siguiente patrón, independientemente de las acciones posteriores, a menos que haya una razón de peso para no hacerlo.
Este método guarda automáticamente $e->getMessage en el mensaje de registro y el objeto $e en el contexto, siguiendo el estándar de contexto PSR-3. Esto se completó en \Magento\Framework\Logger\Monolog::addRecord.
señales de Silenciar
Silenciar las señales no registrando las excepciones que forman parte del flujo de operaciones deseado. No es necesario realizar ninguna acción de seguimiento cuando se encuentra la excepción, por lo que no es necesario registrarla y analizarla cuando se produce. Añada un comentario que indique el motivo de las señales de silencio y que es intencional. Combinar con phpcs:ignore.
Como práctica recomendada, el registro siempre es lo primero en el código para evitar casos en los que se produce otra excepción o error grave antes de escribir en el registro.
Los siguientes ejemplos muestran un control de excepciones incorrecto.
antes del registro
La lógica anterior al registro puede provocar otra excepción o un error irrecuperable, que impide que se registre la excepción y debe reemplazarse por ejemplo correcto.
Este método introduce saltos de línea en el mensaje, que no es compatible con PSR-3. La excepción, incluido el seguimiento de pila, debe formar parte del contexto del mensaje para garantizar que se guarda correctamente con el mensaje en New Relic u otro almacenamiento de registro compatible con monólogos PSR-3.
La excepción se ha degradado a un error, que no permite pasar un objeto, sino sólo una cadena, de ahí el getMessage(). Esto hace que se pierda el seguimiento y debe reemplazarse por los ejemplos correctos que se muestran en Escribir en el registro de excepciones o en excepciones de downgrade.
falta // phpcs:ignore Magento2.CodeAnalysis.EmptyBlock.DetectedCatch
Omitir la línea phpcs:ignore genera un déclencheur de advertencia en PHPCS y no debería pasar su CI. Este debe reemplazarse por el ejemplo correcto mostrado en Señales de silencio.