Magento 客製例外處理
Magento 有提供讓你可以客製自己的Exception,並且可以讓你增加自己想要參數,讓你的log可以有更多資訊並解根據不同Exception做不同的動作。
你可在Magento\Framework\Exception\ 底下找到已經寫好的Exception,就可以直接使用。
例:
- NoSuchEntityException
- NotFoundException
- SerializationException
- ValidatorException
- SessionException
首先要先建立自己的Exception,我們也需要Magento\Framework\Phrase來throw
<?php
namespace AstralWeb\LogException\Model;
use Magento\Framework\Exception\LocalizedException;
class FirstException extends LocalizedException
{
}
接下來就是來使用了。
namespace AstralWeb\LogException\Model;
use AstralWeb\LogException\Model\FirstException;
use AstralWeb\LogException\Model\SecException;
use Magento\Framework\Phrase;
class LogException
{
public function __construct(
) {
}
public function exception()
{
try {
//$this->firstException();
$this->secException();
}catch (FirstException $e){
var_dump($e->getParameters());
} catch (SecException $e){
var_dump($e->getParameters());
} catch (\Exception $e){
var_dump($e->getMessage());
}
}
public function firstException()
{
$data = ['test'=>'test1'];
//throw new FirstException(new Phrase('Client Fail',$data));
}
public function secException()
{
$data = ['test'=>'test2'];
throw new SecException(new Phrase('Client Fail',$data));
}
}
new Phrase(‘Client Fail’,$data)可以讓我們夾帶參數,讓我們可以使用$e->getParameters()拿到想要的資料,可以讓我們在例外處理的時候更方便,資料也更充足。
以上就是歐斯瑞本次 『Magento 客製例外處理』 的分享
記得訂閱歐斯瑞的電子報、追蹤臉書粉絲團及IG,收到更多相關實用資訊!也歡迎與我們聯繫。
我要留言