让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 生成WML页面方法详解
Aug 09 PHP
PHP URL地址获取函数代码(端口等) 推荐
May 15 PHP
php中日期加减法运算实现代码
Dec 08 PHP
PHP之生成GIF动画的实现方法
Jun 07 PHP
discuz目录文件资料汇总
Dec 30 PHP
php实现网站文件批量压缩下载功能
Oct 28 PHP
PHP基于yii框架实现生成ICO图标
Nov 13 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
Nov 30 PHP
100多行PHP代码实现socks5代理服务器[2]
May 05 PHP
php实现用户登陆简单实例
Apr 04 PHP
phpcms配置列表页以及获得文章发布时间
Jul 04 PHP
PHP CURL使用详解
Mar 21 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从FLV文件获取视频预览图的方法
2015/03/12 PHP
PHP实现的XXTEA加密解密算法示例
2018/08/28 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
javascript实现的使用方向键控制光标在table单元格中切换
2010/11/17 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
arguments对象验证函数的参数是否合法
2015/06/26 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
NodeJS和BootStrap分页效果的实现代码
2016/11/07 NodeJs
JavaScript实现经典排序算法之选择排序
2016/12/28 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(一)
2017/01/21 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
bootstrap手风琴折叠示例代码分享
2017/05/22 Javascript
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
vue获取验证码倒计时组件
2019/08/26 Javascript
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
[04:49]2014DOTA2国际邀请赛 Newbee顺利挺进总决赛 ImbaTV独家专访
2014/07/19 DOTA
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
Python实现二叉树的常见遍历操作总结【7种方法】
2019/03/06 Python
Python 自由定制表格的实现示例
2020/03/20 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
HTML5 3D旋转相册的实现示例
2019/12/03 HTML / CSS
Bench加拿大官方网站:英国城市服装品牌
2017/11/03 全球购物
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
室内拓展活动方案
2014/02/13 职场文书
社区戒毒工作方案
2014/06/04 职场文书
施工安全协议书范本
2014/09/26 职场文书
父亲去世追悼词
2015/06/23 职场文书
Pygame如何使用精灵和碰撞检测
2021/11/17 Python
python百行代码实现汉服圈图片爬取
2021/11/23 Python
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers