服务器之家

服务器之家 > 正文

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

时间:2020-06-17 14:49     来源/作者:huangyuxin_

本文实例讲述了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

相关文章

热门资讯

歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意 2019-07-07
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
返回顶部