让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 字符截取 解决中文的截取问题,不用mb系列
Sep 29 PHP
PHP GD 图像处理组件的常用函数总结
Apr 28 PHP
php生成EAN_13标准条形码实例
Nov 13 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
Jun 23 PHP
php中的动态调用实例分析
Jan 07 PHP
WordPress中用于获取文章作者与分类信息的方法整理
Dec 17 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
Jan 04 PHP
php中的登陆login实例代码
Jun 20 PHP
PHP中Trait及其应用详解
Feb 14 PHP
PHP开发APP端微信支付功能
Feb 17 PHP
PHP用函数嵌入网站访问量计数器
Oct 27 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 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
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
IE、FF、Chrome浏览器中的JS差异介绍
2013/08/13 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
jQuery实现的文字hover颜色渐变效果实例
2016/02/20 Javascript
AngularJS基础 ng-keyup 指令简单示例
2016/08/02 Javascript
javascript实现的图片预览功能
2017/03/25 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
vue组件生命周期详解
2017/11/07 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
[01:23]一分钟告诉你 DOTA2为什么叫信仰2
2014/06/20 DOTA
Python __setattr__、 __getattr__、 __delattr__、__call__用法示例
2015/03/06 Python
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
Python程序中使用SQLAlchemy时出现乱码的解决方案
2015/04/24 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
Python发送邮件功能示例【使用QQ邮箱】
2018/12/04 Python
浅谈pytorch中的BN层的注意事项
2020/06/23 Python
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
全球最大的在线橄榄球商店:Lovell Rugby
2018/05/20 全球购物
自荐信格式的六要素
2013/09/21 职场文书
办公室文员工作自我评价
2013/12/01 职场文书
高中毕业生自我鉴定例文
2013/12/29 职场文书
学术会议主持词
2014/03/17 职场文书
规范化管理年活动总结
2014/08/29 职场文书
第二批党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
专项资金申请报告
2015/05/15 职场文书
2015年教研员工作总结
2015/05/26 职场文书
中秋节英文祝福语句(14句)
2019/09/11 职场文书