让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入门源程序
Oct 09 PHP
杏林同学录(五)
Oct 09 PHP
SSI指令
Nov 25 PHP
php设计模式 DAO(数据访问对象模式)
Jun 26 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
Jun 26 PHP
单点登录 Ucenter示例分析
Oct 29 PHP
Java和PHP在Web开发方面对比分析
Mar 01 PHP
微信API接口大全
Apr 15 PHP
一个简单安全的PHP验证码类、PHP验证码
Sep 24 PHP
掌握PHP垃圾回收机制详解
Mar 13 PHP
Yii框架视图、视图布局、视图数据块操作示例
Oct 14 PHP
PHP ob缓存以及ob函数原理实例解析
Nov 13 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
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
Smarty foreach控制循环次数的一些方法
2015/07/01 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
js 手机号码合法性验证代码集合
2012/09/29 Javascript
jquery封装的对话框简单实现
2013/07/21 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
jQuery 表单序列化实例代码
2017/06/11 jQuery
AngularJS实现注册表单验证功能
2017/10/16 Javascript
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
2020/02/16 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
2020/07/19 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
python中readline判断文件读取结束的方法
2014/11/08 Python
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
Python Numpy库datetime类型的处理详解
2019/07/13 Python
python filecmp.dircmp实现递归比对两个目录的方法
2020/05/22 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2013/03/19 面试题
自我评价怎么写好呢?
2013/12/05 职场文书
关于礼仪的演讲稿
2014/01/04 职场文书
新年晚会主持词
2014/03/24 职场文书
公司建议书怎么写
2014/05/15 职场文书
反对邪教标语
2014/06/30 职场文书
单位婚育证明范本
2014/11/21 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers