让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 判断常量,变量和函数是否存在
Apr 26 PHP
Ajax PHP 边学边练 之三 数据库
Nov 26 PHP
PHP 用数组降低程序的时间复杂度
Dec 04 PHP
PHP执行SQL文件并将SQL文件导入到数据库
Sep 17 PHP
详解PHP实现异步调用的4种方法
Mar 14 PHP
php中strlen和mb_strlen用法实例分析
Nov 12 PHP
PHP中Notice错误常见解决方法
Apr 28 PHP
PHP基于GD库实现的生成图片缩略图函数示例
Jul 05 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 PHP
PHP的cookie与session原理及用法详解
Sep 27 PHP
Laravel中如何轻松容易的输出完整的SQL语句
Jul 26 PHP
PHP7修改的函数
Mar 09 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
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
thinkphp中memcache的用法实例
2014/11/29 PHP
11款基于Javascript的文件管理器
2009/10/25 Javascript
javascript实现数字验证码的简单实例
2014/02/10 Javascript
在Linux上用forever实现Node.js项目自启动
2014/07/09 Javascript
NodeJS制作爬虫全过程
2014/12/22 NodeJs
JS实现向表格中动态添加行的方法
2015/03/30 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
微信小程序排坑指南详解
2018/05/23 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
2019/04/25 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
Vuex,iView UI面包屑导航使用扩展详解
2019/11/04 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
[01:51]DAC趣味视频-如何成为职业选手.mp4
2017/04/02 DOTA
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
Python去除列表中重复元素的方法
2015/03/20 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
python多线程socket编程之多客户端接入
2017/09/12 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
matplotlib自定义鼠标光标坐标格式的实现
2021/01/08 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
PHP面试题大全
2015/10/16 面试题
青年文明号创建承诺
2014/03/31 职场文书
学生夜不归宿检讨书
2014/09/23 职场文书
运动员入场词
2015/07/18 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL