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读MYSQL中文乱码的解决方法
Dec 17 PHP
php xfocus防注入资料
Apr 27 PHP
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
Mar 28 PHP
php中常用字符串处理代码片段整理
Nov 07 PHP
php开发留言板的CRUD(增,删,改,查)操作
Apr 19 PHP
destoon公司主页模板风格的添加方法
Jun 20 PHP
PHP连接sql server 2005环境配置及问题解决
Aug 08 PHP
PHP速成大法
Jan 30 PHP
php发送与接收流文件的方法
Feb 11 PHP
thinkPHP简单遍历数组方法分析
May 16 PHP
ThinkPHP下表单令牌错误与解决方法分析
May 20 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
Jun 02 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
一个数据采集类
2007/02/14 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
怎么在Windows系统中搭建php环境
2013/08/31 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
JS小框架 fly javascript framework
2009/11/26 Javascript
基于JQuery的动态删除Table表格的行和列的代码
2011/05/12 Javascript
jquery随机展示头像代码
2011/12/21 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
AngularJS 自定义指令详解及示例代码
2016/08/17 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
详解Node.js开发中的express-session
2017/05/19 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
JS计算距当前时间的时间差实例
2017/12/29 Javascript
使用vue实现grid-layout功能实例代码
2018/01/05 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
[02:10]2018DOTA2亚洲邀请赛赛前采访-Liquid
2018/04/03 DOTA
python求斐波那契数列示例分享
2014/02/14 Python
python查看微信好友是否删除自己
2016/12/19 Python
python pandas库中DataFrame对行和列的操作实例讲解
2018/06/09 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
Python批量启动多线程代码实例
2020/02/18 Python
基于python requests selenium爬取excel vba过程解析
2020/08/12 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
Python3中对json格式数据的分析处理
2021/01/28 Python
css3实现动画的三种方式
2020/08/24 HTML / CSS
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
简约控的天堂:The Undone
2016/12/21 全球购物
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
.NET程序员的数据库面试题
2012/10/10 面试题
销售团队获奖感言
2014/08/14 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
2016新年慰问信范文
2015/03/25 职场文书