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


Posted in PHP onJune 03, 2020

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

异常处理

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

未知错误

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

创建ApiHandleException.php

<?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配置项

已知错误

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

例如:

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

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

1.创建ApiException.php

<?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改写

<?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中添加代码

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

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

PHP 相关文章推荐
一个自定义位数的php多用户计数器代码
Mar 11 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
Jan 23 PHP
php中apc缓存使用示例
Dec 25 PHP
php 5.6版本中编写一个PHP扩展的简单示例
Jan 20 PHP
如何用PHP来实现一个动态Web服务器
Jul 29 PHP
php实现简单的MVC框架实例
Sep 23 PHP
Yii中CGridView实现批量删除的方法
Dec 28 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
yii2 开发api接口时优雅的处理全局异常的方法
May 14 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
May 28 PHP
Swoole源码中如何查询Websocket的连接问题详解
Aug 30 PHP
PHP如何防止用户重复提交表单
Dec 09 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
Jun 03 #PHP
PHP数组基本用法与知识点总结
Jun 02 #PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 #PHP
PHP与Web页面交互操作实例分析
Jun 02 #PHP
PHP Web表单生成器案例分析
Jun 02 #PHP
一文看懂PHP进程管理器php-fpm
Jun 01 #PHP
PHP论坛实现积分系统的思路代码详解
Jun 01 #PHP
You might like
Oracle Faq(Oracle的版本)
2006/10/09 PHP
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
PHP整合七牛实现上传文件
2015/07/03 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
js 判断 enter 事件
2009/02/12 Javascript
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
Javascript中的相等与不等运算
2010/04/25 Javascript
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
jQuery+easyui中的combobox实现下拉框特效
2015/02/27 Javascript
使用Chart.js图表库制作漂亮的响应式表单
2015/10/28 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
jQuery实现复制到粘贴板功能
2017/02/11 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
iView框架问题整理小结
2018/10/16 Javascript
JavaScript对象原型链原理解析
2020/01/22 Javascript
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
js实现飞机大战游戏
2020/08/26 Javascript
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
跟老齐学Python之网站的结构
2014/10/24 Python
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
Python模块future用法原理详解
2020/01/20 Python
Python是什么 Python的用处
2020/05/26 Python
露营世界:Camping World
2017/02/02 全球购物
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
希尔顿酒店官方网站:Hilton Hotels
2017/06/01 全球购物
医院护士求职自荐信格式
2013/09/21 职场文书
团员的自我评价
2013/12/01 职场文书
2014年小学工作总结
2014/11/26 职场文书
2014年销售部工作总结
2014/12/01 职场文书
稽核岗位职责范本
2015/04/13 职场文书
改进工作作风心得体会
2016/01/23 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书