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 相关文章推荐
某大型网络公司应聘时的笔试题目附答案
Mar 27 PHP
PHP之变量、常量学习笔记
Mar 27 PHP
Smarty的配置与高级缓存技术分享
Jun 05 PHP
使用php get_headers 判断URL是否有效的解决办法
Apr 27 PHP
php构造函数实例讲解
Nov 13 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
Nov 22 PHP
php实现cookie加密的方法
Mar 10 PHP
Linux安装配置php环境的方法
Jan 14 PHP
PHP获取指定日期是星期几的实现方法
Nov 30 PHP
CI框架实现优化文件上传及多文件上传的方法
Jan 04 PHP
PHP实现的数据对象映射模式详解
Mar 20 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
Oct 10 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
yii2中使用Active Record模式的方法
2016/01/09 PHP
php简单实现批量上传图片的方法
2016/05/09 PHP
thinkphp框架下404页面设置 仅三步
2016/05/14 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
2019/09/05 PHP
JavaScript与函数式编程解释
2007/04/27 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
2016/07/22 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
原生js中运算符及流程控制示例详解
2021/01/05 Javascript
Python实现使用request模块下载图片demo示例
2019/05/24 Python
pytorch实现onehot编码转为普通label标签
2020/01/02 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
pandas dataframe 中的explode函数用法详解
2020/05/18 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
分别介绍一下Session Bean和Entity Bean
2015/03/13 面试题
通信工程毕业生自荐信
2013/11/01 职场文书
幼师专业求职推荐信
2013/11/08 职场文书
医校毕业生自我鉴定
2014/01/25 职场文书
粗加工管理制度
2014/02/04 职场文书
小学优秀教育工作者事迹材料
2014/05/09 职场文书
发展党员工作情况汇报
2014/10/28 职场文书
公司行政助理岗位职责
2015/04/11 职场文书
美容院管理规章制度
2015/08/05 职场文书
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书
如何vue使用el-table遍历循环表头和表体数据
2022/04/26 Vue.js