symfony2中對異常的處理,個人總結
習慣了之前的出現錯誤,就立即解決的方式。現在在用symfony的用法,發現原來自己一直錯過了一個東西:Exception
現在講講symfony2中如何處理錯誤
1.首先自己在src/AppBundle下建立了一個Exception的資料夾,
BaseException.php的異常基類
namespace AppBundle\Exception; class BaseException extends \Exception { /** * 未登入錯誤 */ const ERROR_CODE_UNLOGIN = 1001; /** * 沒有許可權錯誤 */ const ERROR_CODE_NO_AUTHORITY = 1002; /** * 引數錯誤 */ const ERROR_CODE_ILLEGAL_PARAMETER = 2001; /** * 未知錯誤 */ const ERROR_CODE_UNKNOWN = 5000; /** * 伺服器內部錯誤 */ const ERROR_CODE_INTERNAL = 5001; }
這裡還需要對其進行賦值
NoAuthorityException.php
namespace Material\Exception; /** * 無許可權異常類 * * @author zhujian <zhujian@thinkerx.com> */ class NoAuthorityException extends BaseException { function __construct($message) { parent::__construct($message, BaseException::ERROR_CODE_NO_AUTHORITY); } }
UnLoginException.php
namespace Material\Exception; /** * 未登入異常類 * * @author zhujian <zhujian@thinkerx.com> */ class UnLoginException extends BaseException { function __construct($message) { parent::__construct($message, BaseException::ERROR_CODE_UNLOGIN);
2.建一個EventListener檔案-》 ExceptionListener.php
<?php namespace Material\EventListener; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; class ExceptionListener { public function onKernelException(GetResponseForExceptionEvent $event) { $request = $event->getRequest(); $exceptionListener = null; $exceptionListener = new AjaxExceptionListener(); $exceptionListener->onKernelException($event); } }3.建一個EventListener檔案-》 AjaxExceptionListener.php
<?php namespace Material\EventListener; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; class AjaxExceptionListener extends ExceptionListener { public function onKernelException(GetResponseForExceptionEvent $event) { $exception = $event->getException(); $response = new JsonResponse(array( 'status' => $exception->getCode(), 'msg' => $exception->getMessage(), )); $event->setResponse($response); } }這樣的話有錯誤,我們就可以進行丟擲錯誤,最後在Event進行監聽,處理。
相關文章
- 異常-JDK7針對多個異常的處理方案JDK
- Python異常處理回顧與總結Python
- 處理多個異常
- SpringBoot中異常處理Spring Boot
- 異常處理中,哪個部分可以省略?
- Ruby中的TypeError異常處理Error
- 異常的處理
- 異常-throws的方式處理異常
- 異常篇——異常處理
- 課時32:異常處理:你不可能總是對的
- spring中的統一異常處理Spring
- springboot專案中的異常處理Spring Boot
- SpringBoot中的全域性異常處理Spring Boot
- python異常處理中finally的作用Python
- gRPC 中的異常該如何處理?RPC
- Java 中的異常處理機制Java
- 異常處理
- 說說你對異常處理和錯誤處理的理解
- 課時33:異常處理:你不可能總是對的2
- 20個異常處理的最佳實踐
- JSP 異常處理如何處理?JS
- C#中的異常處理機制C#
- Java中的異常處理最佳實踐Java
- 3大問題!Redis快取異常及處理方案總結Redis快取
- React 異常處理React
- JS異常處理JS
- oracle異常處理Oracle
- Python——異常處理Python
- Python異常處理Python
- ThinkPHP 異常處理PHP
- JavaScript 異常處理JavaScript
- JAVA 異常處理Java
- golang - 異常處理Golang
- 異常處理2
- 異常處理1
- Java 異常處理Java
- Abp 異常處理
- JAVA異常處理Java
- 08、異常處理