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制作静态网站的模板框架(三)
Oct 09 PHP
PHP采集相关教程之一 CURL函数库
Feb 15 PHP
支持中文字母数字、自定义字体php验证码代码
Feb 27 PHP
深入PHP magic quotes的详解
Jun 17 PHP
PHP实现更新中间关联表数据的两种方法
Sep 01 PHP
页面利用渐进式JPEG来提升用户体验度
Dec 01 PHP
Yii2实现同时搜索多个字段的方法
Aug 10 PHP
PHP编程实现csv文件导入mysql数据库的方法
Apr 29 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
Aug 25 PHP
php正则表达式使用方法整理集合
Jan 31 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 PHP
PHP使用非对称加密算法RSA
Apr 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
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
2019/09/23 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
2021/03/09 PHP
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
转义字符(\)对JavaScript中JSON.parse的影响概述
2013/07/17 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
javascript实现数独解法
2015/03/14 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
javascript表单正则应用
2017/02/04 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
2019/09/28 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
用python3教你任意Html主内容提取功能
2018/11/05 Python
使用OpenCV实现仿射变换—缩放功能
2019/08/29 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
Gloeilampgoedkoop荷兰:在线购买灯泡
2019/02/16 全球购物
老教师工作总结的自我评价
2013/09/27 职场文书
网络工程师的自我评价
2013/10/02 职场文书
大学本科生的个人自我评价
2013/12/09 职场文书
银行个人求职自荐信范文
2013/12/16 职场文书
信息服务专业毕业生求职信
2014/03/02 职场文书
2014年司法所工作总结
2014/11/22 职场文书
2014年学校团委工作总结
2014/12/20 职场文书
匿名信格式范文
2015/05/27 职场文书
单位收入证明范本
2015/06/18 职场文书
演讲稿:​快乐,从不抱怨开始!
2019/04/02 职场文书
创业的9条正确思考方式
2019/08/26 职场文书
解析原生JS getComputedStyle
2021/05/25 Javascript
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android