让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 相关文章推荐
VFP与其他应用程序的集成
Oct 09 PHP
用php写的serv-u的web申请账号的程序
Oct 09 PHP
PHP5与MySQL数据库操作常用代码 收集
Mar 21 PHP
php生成的html meta和link标记在body标签里 顶部有个空行
May 18 PHP
php中explode与split的区别介绍
Oct 03 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
Jun 24 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
ThinkPHP模板判断输出Empty标签用法详解
Jun 30 PHP
PHPUnit安装及使用示例
Oct 29 PHP
PHP实现的购物车类实例
Jun 17 PHP
Symfony2函数用法实例分析
Mar 18 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
Apr 23 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 数组基础知识小结
2010/08/20 PHP
php利用gd库为图片添加水印
2016/11/09 PHP
Cookie 注入是怎样产生的
2009/04/08 Javascript
javascript 复杂的嵌套环境中输出单引号和双引号
2009/05/26 Javascript
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
基于jQuery的倒计时插件代码
2011/05/07 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
2014/03/19 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
基于JavaScript实现文字超出部分隐藏
2016/02/29 Javascript
详解nodejs与javascript中的aes加密
2016/05/22 NodeJs
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
2017/02/15 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
Webpack的dll功能使用
2018/06/28 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
python基于pyDes库实现des加密的方法
2017/04/29 Python
Python实现获取前100组勾股数的方法示例
2018/05/04 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
Python实现数值积分方式
2019/11/20 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
StubHub新加坡:购买和出售全球活动门票
2017/03/10 全球购物
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
工程力学硕士生的自我评价范文
2013/11/16 职场文书
孩子教育的心得体会
2014/09/01 职场文书
老公出轨后的保证书
2015/05/08 职场文书
经营目标责任书
2015/05/08 职场文书
出生证明格式
2015/06/15 职场文书
初二数学教学反思
2016/02/17 职场文书
Golang Gob编码(gob包的使用详解)
2021/05/07 Golang
Python移位密码、仿射变换解密实例代码
2021/06/27 Python