Penanganan pengecualian di Magento 2


15

Di Magento 1 saya bisa menangkap pengecualian dan mencatatnya exception.logmenggunakan fileMage::logException($e);

Sekarang, di Magento 2, saya bisa catch (\Exception $e)tetapi apa yang harus saya lakukan dengan pengecualian yang tertangkap? Bagaimana cara saya login exception.log? Atau apa cara khas untuk menangani ini?

Jawaban:


20

Cara termudah untuk mulai mencatat pengecualian Anda adalah dengan menyuntikkannya Psr\Log\LoggerInterfaceke konstruktor kelas Anda:

private $logger;

public function __construct(\Psr\Log\LoggerInterface $logger)
{
    $this->logger = $logger;
}

Dan kemudian dalam catchpernyataan Anda :

public function doSomething()
{
    try {
        /* Some logic that could throw an Exception */
    } catch (\Exception $e) {
        $this->logger->critical($e->getMessage());
    }
}

Hal lain yang terkait dengan cara bereaksi setelah pengecualian tertangkap seharusnya tidak berbeda antara M1 dan M2. Strategi Anda juga akan sangat spesifik untuk kasus penggunaan penanganan pengecualian Anda.


5
Pro Tip: M2 memiliki dukungan untuk langsung melewati pengecualian: $this->logger->debug($e).
nevvermind

1
Sebenarnya untuk mencatat pengecualian perlu menggunakan critical()metode sebagai gantinyadebug()
joni jones

getMessage harus berupa panggilan fungsi: getMessage ()
LM_Fielding

1
@LM_Fielding Tangkapan bagus, diperbaiki.
brendanWeb

@jonijones Kesalahan saya, diperbaiki.
brendanWeb

7

Magento2 memiliki berbagai jenis penangan pengecualian, misalnya:

  • StateException
  • InputException
  • InvalidEmailOrPasswordException
  • MailException
  • NotFoundException
  • ValidatorException

Dll

Semua tipe handler dan kelasnya ada di \vendor\magento\framework\Exception.

Anda perlu memilih penangan Pengecualian yang relevan untuk persyaratan Anda dan menggunakannya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.