服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - PHP教程 - Thinkphp5框架异常处理操作实例分析

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

2020-06-17 14:49huangyuxin_ PHP教程

这篇文章主要介绍了Thinkphp5框架异常处理操作,结合实例形式分析了Thinkphp5框架异常处理操作原理、操作方法与相关使用技巧,需要的朋友可以参考下

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

延伸 · 阅读

精彩推荐