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

时间:2021-07-14 17:16:47

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

 

异常处理

 

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

 

未知错误

 

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

创建ApiHandleException.php

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

2.修改config.phpexception_handle配置项

 

已知错误

 

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

例如:

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

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

1.创建ApiException.php

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

2.对ApiHandleException.php改写

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

 

开发环境

 

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

ApiHandleException.php中添加代码

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

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

原文链接:https://blog.csdn.net/huangyuxin_/article/details/93641943