在Magento 1中,我能够捕获异常并将其记录到exception.log
文件中,使用Mage::logException($e);
现在,在Magento 2中,我可以catch (\Exception $e)
但是如何处理捕获的异常?如何将其登录到exception.log
?或典型的处理方式是什么?
在Magento 1中,我能够捕获异常并将其记录到exception.log
文件中,使用Mage::logException($e);
现在,在Magento 2中,我可以catch (\Exception $e)
但是如何处理捕获的异常?如何将其登录到exception.log
?或典型的处理方式是什么?
Answers:
开始记录异常的最简单方法是将注入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之间,与捕获异常后如何做出反应的其他任何事情都不应有任何区别。您的策略也将非常适合于异常处理用例。
critical()
方法debug()
Magento2具有不同类型的异常处理程序,例如:
StateException
InputException
InvalidEmailOrPasswordException
MailException
NotFoundException
ValidatorException
等等。
所有处理程序类型及其类都存在于中\vendor\magento\framework\Exception
。
您需要为您的需求选择相关的异常处理程序并使用它。
$this->logger->debug($e)
。