让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 相关文章推荐
十天学会php之第七天
Oct 09 PHP
使用XDebug调试及单元测试覆盖率分析
Jan 27 PHP
解析thinkphp import 文件内容变量失效的问题
Jun 20 PHP
php 批量添加多行文本框textarea一行一个
Jun 03 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
Codeigniter的一些优秀特性总结
Jan 21 PHP
PHP的文件操作与算法实现的面试题示例
Aug 10 PHP
CI框架中数据库操作函数$this->db->where()相关用法总结
May 17 PHP
php 自定义错误日志实例详解
Nov 12 PHP
一键生成各种尺寸Icon的php脚本(实例)
Feb 08 PHP
基于PHP常用文件函数和目录函数整理
Aug 17 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
PHP逐行输出(ob_flush与flush的组合)
2012/02/04 PHP
解析php中如何直接执行SHELL
2013/06/28 PHP
Yii中render和renderPartial的区别
2014/09/03 PHP
twig里使用js变量的方法
2016/02/05 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
基于jQuery实现左侧菜单栏可折叠功能
2016/12/27 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
js中this的指向问题归纳总结
2018/11/28 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
[03:55]2014DOTA2国际邀请赛 Fnatic经理采访赢DK在情理之中
2014/07/10 DOTA
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
python flask实现分页的示例代码
2018/08/02 Python
Python while循环使用else语句代码实例
2020/02/07 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
Django视图类型总结
2021/02/17 Python
pip install命令安装扩展库整理
2021/03/02 Python
CSS3中的注音对齐属性ruby-align用法指南
2016/07/01 HTML / CSS
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
新西兰领先的鞋类和靴子网上商城:Merchant 1948
2017/09/08 全球购物
亚洲最大旅游体验平台:KKday
2017/10/21 全球购物
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
教师产假请假条
2014/04/10 职场文书
关于运动会的广播稿
2015/08/19 职场文书
mysql查询结果实现多列拼接查询
2022/04/03 MySQL