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 相关文章推荐
给多个地址发邮件的类
Oct 09 PHP
php mysql 判断update之后是否更新了的方法
Jan 10 PHP
PHP教程之PHP中shell脚本的使用方法分享
Feb 23 PHP
PHP实现CSV文件的导入和导出类
Mar 24 PHP
php实现QQ空间获取当前用户的用户名并生成图片
Jul 25 PHP
PHP实现批量检测网站是否能够正常打开的方法
Aug 23 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
PHP数字金额转换成中文大写显示
Jan 05 PHP
浅谈php使用curl模拟多线程发送请求
Mar 08 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
Apr 03 PHP
php输出控制函数和输出函数生成静态页面
Jun 27 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
Mar 27 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
解析PHP中$_FILES的使用以及注意事项
2013/07/05 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
prototype 的说明 js类
2006/09/07 Javascript
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
2016/03/21 Javascript
jquery延迟对象解析
2016/10/26 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
2017/06/06 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
2017/07/18 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
PyQt Qt Designer工具的布局管理详解
2019/08/07 Python
安装python及pycharm的教程图解
2019/10/10 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
Python3如何在服务器打印资产信息
2020/08/27 Python
澳大利亚在线购买儿童玩具:Toy Universe
2017/12/28 全球购物
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
骨干教师培训方案
2014/05/06 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
主持人演讲稿
2014/05/13 职场文书
淘宝店策划方案
2014/06/07 职场文书
办理房产过户的委托书
2014/09/14 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
迎国庆横幅标语
2014/10/08 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
《水上飞机》教学反思
2016/02/20 职场文书
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers