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定时执行计划任务的多种方法小结
Dec 19 PHP
php 启动时报错的简单解决方法
Jan 27 PHP
PHP实现单例模式最安全的做法
Jun 13 PHP
为PHP5.4开启Zend OPCode缓存
Dec 26 PHP
PHP中文竖排转换实现方法
Oct 23 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
Apr 12 PHP
php下载文件,添加响应头的简单实例
Sep 22 PHP
Zend Framework框架实现类似Google搜索分页效果
Nov 25 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
Sep 03 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
Apr 06 PHP
详解PHP设计模式之依赖注入模式
May 25 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
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
动态表格Table类的实现
2009/08/26 Javascript
Jquery工作常用实例 使用AJAX使网页进行异步更新
2011/07/26 Javascript
javascript 保存文件到本地实现方法
2012/11/29 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
JavaScript合并两个数组并去除重复项的方法
2015/06/13 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
JavaScript 异步调用
2017/10/25 Javascript
nodejs提示:cross-device link not permitted, rename错误的解决方法
2019/06/10 NodeJs
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
Python中元组,列表,字典的区别
2017/05/21 Python
Python装饰器原理与简单用法实例分析
2018/04/29 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
2018/07/19 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
历史专业个人求职信范文
2013/12/07 职场文书
学生干部的自我评价分享
2014/01/18 职场文书
新闻编辑自荐书范文
2014/02/12 职场文书
奥林匹克的口号
2014/06/13 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
员工自我评价范文
2015/03/11 职场文书
2015年卫生监督工作总结
2015/05/21 职场文书
村官2015年度工作总结
2015/10/14 职场文书
Redis做数据持久化的解决方案及底层原理
2021/07/15 Redis
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server
MySQL详细讲解变量variables的用法
2022/06/21 MySQL