Se un'eccezione non viene scritta nel file exception.log con il modello di eccezione come contesto, non viene riconosciuta e analizzata correttamente in New Relic o in un altro archivio di log compatibile con il monologo PSR-3. La registrazione solo di una parte dell’eccezione (o la registrazione nel file errato) causa bug nella produzione quando le eccezioni vengono ignorate.
Gestione delle eccezioni corretta
L'elenco di controllo seguente fornisce alcuni esempi per dimostrare la corretta gestione delle eccezioni.
Scrivi nel registro eccezioni
Scrivere nel registro eccezioni utilizzando il modello seguente, indipendentemente da ulteriori azioni, a meno che non vi sia un motivo valido per non farlo.
Questo approccio salva automaticamente $e->getMessage nel messaggio di registro e l'oggetto $e nel contesto, seguendo lo standard di contesto PSR-3. Operazione completata in \Magento\Framework\Logger\Monolog::addRecord.
Disattiva audio
Disattiva i segnali non registrando le eccezioni che fanno parte del flusso di operazioni previsto. Non è necessaria alcuna azione di follow-up quando si verifica l’eccezione, pertanto non è necessario registrarla e analizzarla quando si verifica. Aggiungete un commento che indica il motivo dell'audio disattivato e che è intenzionale. Combina con phpcs:ignore.
Come best practice, la registrazione viene sempre prima nel codice per evitare casi in cui viene generata un’altra eccezione o un errore irreversibile prima di scrivere nel registro.
Gli esempi seguenti mostrano una gestione errata delle eccezioni.
prima della registrazione
La logica prima della registrazione può causare un'altra eccezione o un errore irreversibile che impedisce la registrazione dell'eccezione e deve essere sostituita da esempio corretto.
Questo approccio introduce interruzioni di riga nel messaggio, non conforme a PSR-3. L'eccezione, inclusa la traccia dello stack, deve far parte del contesto del messaggio per garantire che venga salvata correttamente con il messaggio in New Relic o in un altro archivio di registro compatibile con il monologo PSR-3.
L'eccezione viene ridotta a un errore, che non consente la trasmissione di un oggetto, ma solo di una stringa, da cui deriva getMessage(). Questo causa la perdita della traccia e deve essere sostituito dagli esempi corretti mostrati in Scrivi nel registro eccezioni o Scaricare le eccezioni.
Invece di passare l'oggetto $e, viene passato solo $e->getMessage(). Questo causa la perdita della traccia e deve essere sostituito dagli esempi corretti mostrati Scrivi nel registro eccezioni o Scaricare le eccezioni.
Omettendo la riga phpcs:ignore si attiva un avviso in PHPCS e non si deve trasmettere il CI. Questo deve essere sostituito dall'esempio corretto mostrato in Segnali audio.