让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基础知识:类与对象(5) static
Dec 13 PHP
PHP 遍历XP文件夹下所有文件
Nov 27 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
May 07 PHP
简单实现限定phpmyadmin访问ip的方法
Mar 05 PHP
PHP实现阳历到农历转换的类实例
Mar 07 PHP
在html文件中也可以执行php语句的方法
Apr 09 PHP
php简单socket服务器客户端代码实例
May 18 PHP
如何利用http协议发布博客园博文评论
Aug 03 PHP
php注册登录系统简化版
Dec 28 PHP
关于PHP内置的字符串处理函数详解
Feb 04 PHP
php7 安装yar 生成docker镜像
May 09 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
Jun 22 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中引用符号(&)的使用详解
2013/11/13 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
获取焦点时,利用js定时器设定时间执行动作
2010/04/02 Javascript
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
AngularJS Controller作用域
2017/01/09 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
微信扫码支付零云插件版实例详解
2017/04/26 Javascript
小程序实现多选框功能
2018/10/30 Javascript
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
分享一个可以生成各种进制格式IP的小工具实例代码
2017/07/28 Python
Python中read()、readline()和readlines()三者间的区别和用法
2017/07/30 Python
Pandas 合并多个Dataframe(merge,concat)的方法
2018/06/08 Python
Pycharm更换python解释器的方法
2018/10/29 Python
python构建基础的爬虫教学
2018/12/23 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
python3.7添加dlib模块的方法
2020/07/01 Python
python3.4中清屏的处理方法
2020/07/06 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
python PIL模块的基本使用
2020/09/29 Python
中国第一家杂志折扣订阅网:杂志铺
2016/08/30 全球购物
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
SHEIN台湾:购买最新流行女装服饰
2019/05/18 全球购物
尊师重教演讲稿
2014/09/04 职场文书
井冈山红色之旅心得体会
2014/10/07 职场文书
入党自荐书范文
2015/03/05 职场文书
运输公司工作总结
2015/08/11 职场文书
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js