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 相关文章推荐
建立动态的WML站点(二)
Oct 09 PHP
destoon整合ucenter后注册页面不跳转的解决方法
Jun 21 PHP
Win7 64位系统下PHP连接Oracle数据库
Aug 20 PHP
ThinkPHP添加更新标签的方法
Dec 05 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
Jul 06 PHP
PHP中如何判断exec函数执行成功?
Aug 04 PHP
PHP开发的微信现金红包功能示例
Jun 29 PHP
PHP+Ajax实现的博客文章添加类别功能示例
Mar 29 PHP
php微信开发之谷歌测距
Jun 14 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
Sep 30 PHP
php+layui数据表格实现数据分页渲染代码
Oct 26 PHP
thinkphp5 redis缓存新增方法实例讲解
Mar 24 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使用Mysql事务实例解析
2014/09/08 PHP
PHP内存缓存Memcached类实例
2014/12/08 PHP
PHP生成随机字符串(3种方法)
2015/09/25 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
javascript实现简单的html5视频播放器
2015/05/06 Javascript
jQuery实现的登录浮动框效果代码
2015/09/26 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
基于原生js淡入淡出函数封装(兼容IE)
2016/10/20 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
基于JS设计12306登录页面
2016/12/28 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
2017/01/21 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
[15:41]教你分分钟做大人——灰烬之灵
2015/03/11 DOTA
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
使用python写的opencv实时监测和解析二维码和条形码
2019/08/14 Python
python中Lambda表达式详解
2019/11/20 Python
python实现从ftp服务器下载文件
2020/03/03 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
Python定义一个Actor任务
2020/07/29 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
英国儿童家具专卖店:GLTC
2016/09/24 全球购物
自荐信结尾
2013/10/27 职场文书
医院护士的求职信
2014/01/03 职场文书
企业项目策划书
2014/01/11 职场文书
大学生的自我鉴定范文
2014/01/21 职场文书
旅游网创业计划书
2014/01/31 职场文书
幼儿园国庆节活动方案
2014/02/01 职场文书
预备党员入党自我评价范文
2014/03/10 职场文书
村委会贫困证明范文
2014/09/21 职场文书
个人授权委托书范本格式
2014/10/12 职场文书