마 젠토 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
전문가 팁 : M2는 예외를 직접 전달할 수 있도록 지원합니다 $this->logger->debug($e).
nevvermind

1
실제로 예외가 사용할 필요가 로그인하는 critical()대신 방법debug()
존스 조니

의 getMessage ()의 getMessage 함수 호출되어야
LM_Fielding

1
@LM_Fielding 잘 잡혔습니다.
brendanWeb

@jonijones 내 실수가 수정되었습니다.
brendanWeb

7

Magento2에는 다른 유형의 예외 처리기가 있습니다 (예 :

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

기타.

모든 핸들러 유형 및 해당 클래스는에 있습니다 \vendor\magento\framework\Exception.

요구 사항에 대한 관련 예외 처리기를 선택하고 사용해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.