Als een uitzondering niet naar het exception.log dossier met het uitzonderingsmodel als context wordt geschreven, wordt het niet erkend en correct geanalyseerd in New Relic of andere PSR-3 monolog-compatibele logboekopslag. Het registreren slechts een deel van de uitzondering (of het registreren van het aan het verkeerde dossier) leidt tot insecten in productie wanneer de uitzonderingen worden genegeerd.
Uitzonderingsverwerking corrigeren
De volgende controlelijst verstrekt voorbeelden om correcte uitzonderingsbehandeling aan te tonen.
schrijft aan het uitzonderingslogboek
Schrijf aan het uitzonderingslogboek gebruikend het volgende patroon, ongeacht verdere acties, tenzij er een dwingende reden is om niet te doen.
Deze benadering bewaart automatisch $e->getMessage aan het logboekbericht en het $e voorwerp aan de context, na PSR-3 contextstandaard. Dit gebeurt in \Magento\Framework\Logger\Monolog::addRecord .
Geluidssignalen dempen
De signalen van de demping door uitzonderingen niet te registreren die deel van de voorgenomen verrichtingenstroom uitmaken. Er is geen follow-upactie nodig wanneer de uitzondering wordt aangetroffen, dus deze hoeft niet te worden geregistreerd en geanalyseerd wanneer deze zich voordoet. Voeg een opmerking toe die de reden voor het dempen van signalen aangeeft en die aangeeft dat dit opzettelijk is. Combineer met phpcs:ignore .
Als beste praktijk komt het registreren altijd eerst in de code om gevallen te verhinderen waar een andere uitzondering of een fatale fout alvorens aan het logboek wordt geworpen.
In de volgende voorbeelden wordt een onjuiste afhandeling van uitzonderingen getoond.
Logica alvorens te registreren
De logica vóór het registreren kan tot een andere uitzondering of fatale fout leiden, die de uitzondering verhindert worden geregistreerd en zou door correct voorbeeldmoeten worden vervangen.
Als de gevangen gelokaliseerde uitzondering nog niet wordt vertaald, los het probleem op de plaats op waar de uitzondering de eerste keer wordt geworpen.
Deze benadering introduceert lijnonderbrekingen in het bericht, dat niet volgzaam met PSR-3 is. De uitzondering, met inbegrip van stapelspoor, moet deel van de berichtcontext uitmaken om ervoor te zorgen dat het correct met het bericht in New Relic of andere PSR-3 monolog-compatibele logboekopslag wordt bewaard.
De uitzondering wordt gedowngraded naar een fout, die niet toestaat dat een object wordt doorgegeven, maar alleen een tekenreeks, vandaar de getMessage() . Dit veroorzaakt het spoor dat moet worden verloren en door de correcte die voorbeelden worden vervangen in worden getoond schrijven aan het uitzonderingslogboekof uitzonderingen van de Ondergraving.
Als u de regel phpcs:ignore weglaat, wordt een waarschuwing in PHPCS gegenereerd en wordt uw CI niet doorgegeven. Dit zou door het correcte voorbeeld moeten worden vervangen dat in wordt getoond signalen van de Dempen.