İstisna yönetimi in Magento 2


15

Magento 1'de istisnaları yakalayıp bunları exception.logkullanarak dosyaya giriş yapabildimMage::logException($e);

Şimdi, Magento 2'de yapabilirim catch (\Exception $e)ama yakalanan istisna ile ne yapabilirim? Nasıl giriş yapabilirim exception.log? Veya bununla baş etmenin tipik yolu nedir?

Yanıtlar:


20

İstisnalarınızı günlüğe kaydetmeye başlamanın en kolay yolu Psr\Log\LoggerInterface, sınıfınızın yapıcısına enjekte etmek olacaktır :

private $logger;

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

Ve sonra catchifadenizde:

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

Bir istisna yakalandıktan sonra nasıl tepki verileceği ile ilgili hiçbir şey M1 ve M2 arasında farklı olmamalıdır. Stratejiniz, istisna işleme kullanım durumunuza da çok özel olacaktır.


5
Pro ipucu: M2 doğrudan istisna geçirilmesi için desteği vardır: $this->logger->debug($e).
nevvermind

1
Aslında günlüğü istisnalar critical()yerine yöntemini kullanmak gerekirdebug()
joni jones

getMessage bir işlev çağrısı olmalıdır: getMessage ()
LM_Fielding

1
@LM_Fielding İyi yakalama, sabit.
brendanWeb

@jonijones Benim hatam düzeltildi.
brendanWeb

7

Magento2'nin farklı tür İstisna işleyicileri vardır, örneğin:

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

Vb.

Tüm işleyici türleri ve sınıfları \vendor\magento\framework\Exception.

Gereksinimleriniz için ilgili İstisna işleyicisini seçmeniz ve kullanmanız gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.