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進行監聽,處理。
相關文章
- HIVEMapJoin異常問題處理總結Hive
- 總結:整理 oracle異常錯誤處理 .Oracle
- Python異常處理回顧與總結Python
- Java 異常處理的誤區和經驗總結Java
- phptrycatch異常處理結構PHP
- Python 中的異常處理Python
- React 16 中的異常處理React
- Ruby中的TypeError異常處理Error
- 異常的處理
- 異常篇——異常處理
- 異常-throws的方式處理異常
- 異常-JDK7針對多個異常的處理方案JDK
- 課時32:異常處理:你不可能總是對的
- C++異常處理機制核心觀點總結C++
- Java 中的異常處理機制Java
- 異常處理
- SpringBoot中異常處理Spring Boot
- 課時33:異常處理:你不可能總是對的2
- spring中的統一異常處理Spring
- C#中的異常處理機制C#
- gRPC 中的異常該如何處理?RPC
- .NET中異常處理的最佳實踐
- pl/sql中錯誤的異常處理SQL
- Java中的異常處理最佳實踐Java
- 異常處理與異常函式函式
- java優雅的處理程式中的異常Java
- JavaScript 異常處理JavaScript
- ThinkPHP 異常處理PHP
- React 異常處理React
- 08、異常處理
- JAVA 異常處理Java
- JAVA異常處理Java
- Abp 異常處理
- oracle異常處理Oracle
- PowerShell 異常處理
- plsql異常處理SQL
- Swift 異常處理Swift
- JS異常處理JS