Magento 2 में अपवाद हैंडलिंग


15

Magento 1 में मैं अपवादों को पकड़ने में सक्षम था और उन्हें exception.logफ़ाइल का उपयोग करके लॉग इन कियाMage::logException($e);

अब, Magento 2 में, मैं कर सकता हूं catch (\Exception $e)लेकिन पकड़े गए अपवाद के साथ मैं क्या कर सकता हूं? मैं इसे कैसे लॉग इन करूं exception.log? या इसे संभालने का विशिष्ट तरीका क्या है?

जवाबों:


20

अपने अपवादों को लॉग करना शुरू करने का सबसे आसान तरीका Psr\Log\LoggerInterfaceआपकी कक्षा के निर्माता को इंजेक्ट करना होगा :

private $logger;

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

और फिर अपने catchबयान में:

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

अपवाद के बाद कैसे प्रतिक्रिया दें, इससे संबंधित कुछ भी M1 और M2 के बीच कोई अंतर नहीं होना चाहिए। आपकी रणनीति आपके अपवाद हैंडलिंग उपयोग मामले के लिए भी बहुत विशिष्ट होगी।


5
प्रो टिप: एम 2 के पास अपवाद को सीधे पारित करने के लिए समर्थन है $this->logger->debug($e):।
नेवरमाइंड

1
वास्तव में लॉग इन अपवादों के critical()बजाय विधि का उपयोग करने की आवश्यकता हैdebug()
जोनी

getMessage एक फंक्शन कॉल होनी चाहिए: getMessage ()
LM_Fielding

1
@LM_Fielding अच्छा पकड़, निश्चित।
ब्रेंडनवेब

@jonijones मेरी गलती, तय
ब्रेंडनवेब

7

उदाहरण के लिए Magento2 में विभिन्न प्रकार के अपवाद हैंडलर हैं:

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

आदि।

सभी हैंडलर प्रकार और उनकी कक्षाएं मौजूद हैं \vendor\magento\framework\Exception

आपको अपनी आवश्यकताओं के लिए प्रासंगिक अपवाद हैंडलर का चयन करना होगा और उसका उपयोग करना होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.