ম্যাজেন্টো 2 এ ব্যতিক্রম হ্যান্ডলিং


15

ম্যাজেন্টো 1-এ আমি ব্যতিক্রমগুলি ধরতে এবং সেগুলি exception.logব্যবহার করে ফাইলে লগ করতে সক্ষম হয়েছিMage::logException($e);

এখন, ম্যাজেন্টো 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());
    }
}

ব্যতিক্রম ধরা পড়ার পরে কীভাবে প্রতিক্রিয়া জানানো উচিত সে সম্পর্কিত অন্য যে কোনও কিছুই এম 1 এবং এম 2 এর মধ্যে আলাদা হওয়া উচিত নয়। আপনার কৌশলটি আপনার ব্যতিক্রম হ্যান্ডলিং ব্যবহারের ক্ষেত্রে খুব সুনির্দিষ্ট হবে।


5
প্রো টিপ: M2 সরাসরি ব্যতিক্রম ক্ষণস্থায়ী জন্য সমর্থন রয়েছে: $this->logger->debug($e)
নেভভারমাইন্ড

1
আসলে লগ করতে ব্যতিক্রমগুলির critical()পরিবর্তে পদ্ধতিটি ব্যবহার করা দরকারdebug()
joni j جون

getMessage একটি ফাংশন কল হওয়া উচিত: getMessage ()
এলএম_ফিল্ডিং

1
@ এলএম_ফিল্ডিং ভাল ক্যাচ, ফিক্সড।
ব্রেন্ডনওয়েব

@ জোনিজোনস আমার ভুল, স্থির
ব্রেন্ডনওয়েব

7

ম্যাজেন্টো 2 এর বিভিন্ন ধরণের ব্যতিক্রম হ্যান্ডলার রয়েছে, উদাহরণস্বরূপ:

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

প্রভৃতি

সকল হ্যান্ডলার ধরনের এবং তাদের শ্রেণীর মধ্যে উপস্থিত \vendor\magento\framework\Exception

আপনার প্রয়োজনীয়তার জন্য আপনাকে প্রাসঙ্গিক ব্যতিক্রম হ্যান্ডলারটি চয়ন করতে হবে এবং এটি ব্যবহার করতে হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.