让whoops帮我们告别ThinkPHP6的异常页面


Posted in PHP onMarch 02, 2020

春节期间熟悉了TP6, 也写了一个TP6的博客程序,但系统的异常页面实在另外头疼,很多时候无法查看到是哪行代码出的问题。

所以就特别的想把whoops引进来,经过一系列的研究,终于找到了解决的办法:

1. 通过composer安装whoops

运行命令:  composer require filp/whoops

注意:composer引进的文件如果有语法错误,需要提前把语法错误处理好才能进行安装,否则一直报错。

2. 使用whoops接管tp6的异常处理

在/app/ExceptionHandle.php文件的render()方法中加入如下代码:

// 添加自定义异常处理机制
if (ENV('APP_DEBUG')) {
  // 如果是HttpResponseException异常则原样输出
  // JUMP插件里的success,error和result方法均返回的是HttpResponseException异常
  if ($e instanceof HttpResponseException) {
    return $e->getResponse();
  }

  // Whoops 接管请求异常
  $whoops = new \Whoops\Run;
  $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler());
  return Response::create(
    $whoops->handleException($e),
    'html',
    500
  );
}

如下图:

让whoops帮我们告别ThinkPHP6的异常页面

3. 看看结果吧

我在博客首页的index方法中写入了一个不存在的函数:

让whoops帮我们告别ThinkPHP6的异常页面

刷新页面一看, 妥了

让whoops帮我们告别ThinkPHP6的异常页面

OK. 熟悉的whoops又回来了.

4. 后记

为了在thinkphp6中使用whoops, 我又认真的看了一遍PHP7中的异常机制,终于是把whoops给引进来了.

在学习异常处理的过程中, 我也发现在PHP7中应该使用try()catch()来进行业务处理, 而不是再使用if()else()了.

后续我会单独写篇文章来讲述我在研究PHP7的异常中获得的经验.

以上就是让whoops帮我们告别ThinkPHP6的异常页面的详细内容,更多关于whoops替换ThinkPHP6的异常页的资料请关注三水点靠木其它相关文章!

PHP 相关文章推荐
用文本文件制作留言板提示(下)
Oct 09 PHP
php 来访国内外IP判断代码并实现页面跳转
Dec 18 PHP
整理的一些实用WordPress后台MySQL操作命令
Jan 07 PHP
PHP导航下拉菜单的实现如此简单
Sep 22 PHP
php 中文字符串首字母的获取函数分享
Nov 04 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
Jun 08 PHP
thinkphp学习笔记之多表查询
Jul 28 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
Aug 08 PHP
js+php实现静态页面实时调用用户登陆状态的方法
Jan 04 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
Feb 18 PHP
php 生成加密公钥加密私钥实例详解
Jun 16 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
May 23 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 #PHP
PHP中关于php.ini参数优化详解
Feb 28 #PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 #PHP
php 的多进程操作实践案例分析
Feb 28 #PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 #PHP
php的无刷新操作实现方法分析
Feb 28 #PHP
php下的原生ajax请求用法实例分析
Feb 28 #PHP
You might like
Mysql的常用命令
2006/10/09 PHP
PHP中COOKIES使用示例
2015/07/26 PHP
ThinkPHP路由详解
2015/07/27 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
2020/01/04 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
2020/06/24 PHP
jquery实现智能感知连接外网搜索
2013/05/21 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
JQuery之proxy实现绑定代理方法
2016/08/01 Javascript
javascript中递归的两种写法
2017/01/17 Javascript
详解Node.js 命令行程序开发教程
2017/06/07 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
Sublime Text新建.vue模板并高亮(图文教程)
2017/10/26 Javascript
vue技术分享之你可能不知道的7个秘密
2018/04/09 Javascript
VUE DOM加载后执行自定义事件的方法
2018/09/07 Javascript
使用ECharts实现状态区间图
2018/10/25 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
Django xadmin安装及使用详解
2020/10/26 Python
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
儿科主治医生个人求职信
2013/09/23 职场文书
社区工作者思想汇报
2014/01/13 职场文书
班队活动设计方案
2014/01/30 职场文书
求职信的七个关键技巧
2014/02/05 职场文书
企业演讲比赛主持词
2014/03/18 职场文书
学校学习雷锋活动总结
2014/07/03 职场文书
初中生庆国庆演讲稿范文2014
2014/09/25 职场文书
婚礼父母答谢词
2015/01/04 职场文书
Golang二维数组的使用方式
2021/05/28 Golang
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电