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 数据库树的遍历方法
Feb 06 PHP
理解php原理的opcodes(操作码)
Oct 26 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
Jan 12 PHP
ajax完美实现两个网页 分页功能的实例代码
Apr 16 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 PHP
解析php中curl_multi的应用
Jul 17 PHP
在Mac上编译安装PHP7的开发环境
Jul 28 PHP
深入浅析yii2-gii自定义模板的方法
Apr 26 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
php 解析xml 的四种方法详细介绍
Oct 26 PHP
php array_multisort 对数组进行排序详解及实例代码
Oct 27 PHP
PHP+MySQL实现模糊查询员工信息功能示例
Jun 01 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
Zerg剧情介绍
2020/03/14 星际争霸
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
PHP学习笔记之session
2018/05/06 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
2020/05/01 PHP
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
jQuery短信验证倒计时功能实现方法详解
2016/05/25 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
解决vue 项目引入字体图标报错、不显示等问题
2018/09/01 Javascript
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
2019/07/20 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
package.json各个属性说明详解
2020/03/11 Javascript
python实现寻找最长回文子序列的方法
2018/06/02 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
Liu Jo西班牙官网:意大利服装品牌
2019/09/11 全球购物
英国时尚配饰、珠宝和服装网站:KJ Beckett
2020/01/23 全球购物
教师自我评价范例
2013/09/24 职场文书
个人求职信范例
2014/01/29 职场文书
同学会主持词
2014/03/18 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
体育教师教学随笔
2015/08/15 职场文书
Java设计模式之代理模式
2022/04/22 Java/Android