让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 相关文章推荐
第七节 类的静态成员 [7]
Oct 09 PHP
用php+mysql一个名片库程序
Oct 09 PHP
如何使用PHP实现javascript的escape和unescape函数
Jun 29 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
Nov 05 PHP
php基于curl重写file_get_contents函数实例
Nov 08 PHP
记录一次排查PHP脚本执行卡住的问题
Dec 27 PHP
PHP解耦的三重境界(浅谈服务容器)
Mar 13 PHP
完美解决在ThinkPHP控制器中命名空间的问题
May 05 PHP
php批量修改表结构实例
May 24 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
php面试中关于面向对象的相关问题
Feb 13 PHP
使用PHP开发留言板功能
Nov 19 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通过PHPExcel导入Excel表格到MySQL数据库的简单实例
2016/10/29 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
Jquery注册事件实现方法
2015/05/18 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
AngularJS延迟加载html template
2016/07/27 Javascript
BootStrap modal模态弹窗使用小结
2016/10/26 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
vue监听键盘事件的快捷方法【推荐】
2018/07/11 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
python ddt数据驱动最简实例代码
2019/02/22 Python
Python实现RGB与HSI颜色空间的互换方式
2019/11/27 Python
python初步实现word2vec操作
2020/06/09 Python
Python常驻任务实现接收外界参数代码解析
2020/07/21 Python
Python 创建TCP服务器的方法
2020/07/28 Python
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
BOSE德国官网:尽探索之力,享音乐之极
2016/12/11 全球购物
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
FLOS美国官网:意大利高级照明工艺的传奇
2018/08/07 全球购物
荷兰的时尚市场:To Be Dressed
2019/05/06 全球购物
印度在线购物网站:Paytmmall
2019/07/24 全球购物
C语言笔试题回忆
2015/04/02 面试题
资产经营总监岗位职责
2013/12/04 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
JavaScript原始值与包装对象的详细介绍
2021/05/11 Javascript
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android
apache虚拟主机配置的三种方式(小结)
2022/07/23 Servers