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 默默经典版本
Aug 04 PHP
apache php模块整合操作指南
Nov 16 PHP
浅析php过滤html字符串,防止SQL注入的方法
Jul 02 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
Dec 18 PHP
WAMP环境中扩展oracle函数库(oci)
Jun 26 PHP
基于php实现随机合并数组并排序(原排序)
Nov 26 PHP
非常实用的php验证码类
May 15 PHP
浅谈PHP命令执行php文件需要注意的问题
Dec 16 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
Jan 16 PHP
Yii2汉字转拼音类的实例代码
Apr 18 PHP
PHP-FPM 的管理和配置详解
Feb 17 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
Mar 09 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实现小写金额转换大写金额的代码(精确到分)
2012/01/10 PHP
基于jQuery图片平滑连续滚动插件
2009/04/27 Javascript
js拼接html注意问题示例探讨
2014/07/14 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
JavaScript里 ==与===区别详解
2016/08/16 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
JS时间控制实现动态效果的实例讲解
2017/07/31 Javascript
微信小程序wx.request实现后台数据交互功能分析
2017/11/25 Javascript
vue.js select下拉框绑定和取值方法
2018/03/03 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
AngularJs用户输入动态模板XSS攻击示例详解
2018/04/21 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
Vue递归实现树形菜单方法实例
2018/11/06 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
2020/08/03 Javascript
Vue中component标签解决项目组件化操作
2020/09/04 Javascript
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
python实现简单中文词频统计示例
2017/11/08 Python
Pythony运维入门之Socket网络编程详解
2019/04/15 Python
使用Python控制摄像头拍照并发邮件
2019/04/23 Python
python制作填词游戏步骤详解
2019/05/05 Python
python进程和线程用法知识点总结
2019/05/28 Python
python如何写出表白程序
2020/06/01 Python
详解HTML5中download属性的应用
2015/08/06 HTML / CSS
英国打印机墨水和碳粉商店:Printerinks
2017/06/30 全球购物
世界领先的26岁以下学生和青少年旅行预订网站:StudentUniverse
2018/07/01 全球购物
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
教师专业理论水平的自我评价分享
2013/11/09 职场文书
应届生自我鉴定
2013/12/11 职场文书
宿舍标语大全
2014/06/19 职场文书
超市创业计划书
2014/09/15 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
《多彩的民间艺术》教学反思
2016/02/16 职场文书
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang
详解Redis实现限流的三种方式
2021/04/27 Redis
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库