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 GD 图像处理组件的常用函数总结
Apr 28 PHP
解析PayPal支付接口的PHP开发方式
Nov 28 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
Oct 23 PHP
使用php伪造referer的方法 利用referer防止图片盗链
Jan 20 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
Dec 15 PHP
php检测url是否存在的方法
Apr 14 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
Dec 20 PHP
php简单的上传类分享
May 15 PHP
Laravel 加载第三方类库的方法
Apr 20 PHP
PHP+jQuery实现即点即改功能示例
Feb 21 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
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
基于MySQL到MongoDB简易对照表的详解
2013/06/03 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
PHP单链表的实现代码
2016/07/05 PHP
Yii框架的路由配置方法分析
2019/09/09 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
javascript循环变量注册dom事件 之强大的闭包
2010/09/08 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
JavaScript两个变量交换值的实现方法
2017/03/01 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
JavaScript模块化之使用requireJS按需加载
2017/04/12 Javascript
javascript基于定时器实现进度条功能实例
2017/10/13 Javascript
基于jQuery实现的设置文本区域的光标位置
2018/06/15 jQuery
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
pandas删除行删除列增加行增加列的实现
2019/07/06 Python
python中图像通道分离与合并实例
2020/01/17 Python
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
The Hut英国:英国领先的豪华在线百货商店
2019/07/26 全球购物
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
电子商务专业推荐信范文
2013/12/02 职场文书
单位领导证婚词
2014/01/14 职场文书
小学生优秀评语大全
2014/04/22 职场文书
食品安全演讲稿
2014/09/01 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
2014年环保局工作总结
2014/12/11 职场文书
2015年防汛工作总结
2015/05/15 职场文书
工伤认定行政答辩状
2015/05/22 职场文书
2016年禁毒宣传活动总结
2016/04/05 职场文书
人物搭配车车超萌联名预备中 【咒术迴战】 ⨯ 【天竺鼠车车】 展开合作
2022/04/11 日漫