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定时执行计划任务的多种方法小结
Dec 19 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
Apr 10 PHP
php sybase_fetch_array使用方法
Apr 15 PHP
分享php分页的功能模块
Jun 16 PHP
PHP实现图片上传并压缩
Dec 22 PHP
php+ajax无刷新上传图片的实现方法
Dec 06 PHP
Yii框架创建cronjob定时任务的方法分析
May 23 PHP
PHP面向对象多态性实现方法简单示例
Sep 27 PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
Oct 23 PHP
php实现文件上传基本验证
Mar 04 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
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
php中global和$GLOBALS[]的分析之一
2012/02/02 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
php中filter_input函数用法分析
2014/11/15 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
JS中的forEach、$.each、map方法推荐
2016/04/05 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
[01:01:31]2018DOTA2亚洲邀请赛3月29日小组赛B组 Mineski VS paiN
2018/03/30 DOTA
[42:20]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python文件和目录操作方法大全(含实例)
2014/03/12 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
2017/09/08 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
python中栈的原理及实现方法示例
2019/11/27 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
保洁主管岗位职责
2013/11/20 职场文书
房地产销售计划书
2014/01/10 职场文书
学生偷窃检讨书
2014/09/25 职场文书
反邪教观后感
2015/06/11 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
Spring Cloud OpenFeign模版化客户端
2022/06/25 Java/Android
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL
Python使用pandas导入xlsx格式的excel文件内容操作代码
2022/12/24 Python