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 相关文章推荐
MySQL中create table语句的基本语法是
Jan 15 PHP
PHP Ajax中文乱码问题解决方法
Feb 27 PHP
phpmailer发送gmail邮件实例详解
Jun 24 PHP
php实现MD5加密16位(不要默认的32位)
Aug 12 PHP
php中session与cookie的比较
Jan 27 PHP
crontab无法执行php的解决方法
Jan 25 PHP
Yii框架上传图片用法总结
Mar 28 PHP
深入理解PHP之源码目录结构与功能说明
Jun 01 PHP
PHP获取指定日期是星期几的实现方法
Nov 30 PHP
php 微信开发获取用户信息如何实现
Dec 13 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
May 29 PHP
tp5.1 框架路由操作-URL生成实例分析
May 26 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 动态执行带有参数的类方法
2009/04/10 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
jQuery EasyUI之DataGrid使用实例详解
2016/01/04 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
微信小程序实现之手势锁功能实例代码
2018/07/19 Javascript
JS高级技巧(简洁版)
2018/07/29 Javascript
el-select 下拉框多选实现全选的实现
2019/08/02 Javascript
[02:54]DOTA2亚洲邀请赛 VG战队出场宣传片
2015/02/07 DOTA
[54:15]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第二场2月1日
2021/03/11 DOTA
netbeans7安装python插件的方法图解
2013/12/24 Python
python基础教程之对象和类的实际运用
2014/08/29 Python
python模拟事件触发机制详解
2018/01/19 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
英国图书音像网站:Hive.co.uk(图书、电子书、DVD、蓝光、音乐CD等)
2017/10/16 全球购物
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
会计专业毕业生自我鉴定
2013/10/29 职场文书
给医务人员表扬信
2014/01/12 职场文书
会计学专业学生的求职信范文
2014/01/27 职场文书
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
设计师求职信模板
2014/05/06 职场文书
运动会演讲稿200字
2014/08/25 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
地方白酒代理协议书
2014/10/25 职场文书
2014年酒店年度工作总结
2014/12/10 职场文书
学生检讨书
2015/01/27 职场文书
八年级作文之友谊
2019/12/02 职场文书
Pygame Draw绘图函数的具体使用
2021/11/17 Python
教你win10系统中APPCRASH事件问题解决方法
2022/07/15 数码科技