当前位置:首页 > CMS教程 > Thinkphp > 列表

Thinkphp5框架异常处理操作实例分析

发布:smiling 来源: PHP粉丝网  添加日期:2022-03-12 13:30:38 浏览: 评论:0 

本文实例讲述了Thinkphp5框架异常处理操作,分享给大家供大家参考,具体如下:

异常处理

有时候服务端会报出我们无法感知的错误,TP5默认会自动渲染错误的形式,生产环境中这样的形式并不是我们想要的。

未知错误

1.exception\Handle.php下的render方法需要覆盖

创建ApiHandleException.php

  1. <?php 
  2.  
  3. namespace app\common\lib\exception; 
  4. use think\exception\Handle; 
  5.  
  6. class ApiHandleException extends Handle { 
  7.  
  8.   /** 
  9.    * http 状态码 
  10.    * @var int 
  11.    */ 
  12.   public $httpCode = 500; 
  13.  
  14.   public function render(\Exception $e) { 
  15.     return show(0, $e->getMessage(), [], $this->httpCode); 
  16.   } 

2.修改config.php的exception_handle配置项

已知错误

我们在判断一个数据是否合法的时候,若不合法则抛出异常。

例如:

  1. if($data['msg'] != 1){ 
  2.   throw Exception('数据异常'); 

使用内置的异常http状态码始终为500

1.创建ApiException.php

  1. <?php 
  2.  
  3. namespace app\common\lib\exception; 
  4. use think\Exception; 
  5.  
  6. class ApiException extends Exception { 
  7.  
  8.   public $message = ''
  9.   public $httpCode = 500; 
  10.   public $code = 0; 
  11.   /** 
  12.    * @param string $message 
  13.    * @param int $httpCode 
  14.    * @param int $code 
  15.    */ 
  16.   public function __construct($message = ''$httpCode = 0, $code = 0) { 
  17.     $this->httpCode = $httpCode
  18.     $this->message = $message
  19.     $this->code = $code
  20.   } 

2.对ApiHandleException.php改写

  1. <?php 
  2.  
  3. namespace app\common\lib\exception; 
  4. use think\exception\Handle; 
  5.  
  6. class ApiHandleException extends Handle { 
  7.  
  8.   /** 
  9.    * http 状态码 
  10.    * @var int 
  11.    */ 
  12.   public $httpCode = 500; 
  13.  
  14.   public function render(\Exception $e) { 
  15.     if ($e instanceof ApiException) { 
  16.       $this->httpCode = $e->httpCode; 
  17.     } 
  18.     return show(0, $e->getMessage(), [], $this->httpCode); 
  19.   } 

开发环境

在开发环境的时候依旧使用异常渲染的模式

在ApiHandleException.php中添加代码

  1. if(config('app_debug') == true) { 
  2.   return parent::render($e); 
  3. }

Tags: Thinkphp5异常处理

分享到: