让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安装全攻略:APACHE
Oct 09 PHP
php面向对象全攻略 (一) 面向对象基础知识
Sep 30 PHP
php dirname(__FILE__) 获取当前文件的绝对路径
Jun 28 PHP
file_get_contents获取不到网页内容的解决方法
Mar 07 PHP
解析wamp5下虚拟机配置文档
Jun 27 PHP
windows7下php开发环境搭建图文教程
Jan 06 PHP
php遍历树的常用方法汇总
Jun 18 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
Dec 17 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
May 18 PHP
PHP入门教程之表单与验证实例详解
Sep 11 PHP
利用PHP绘图函数实现简单验证码功能的方法
Oct 18 PHP
Yii CDBCriteria常用方法实例小结
Jan 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的错误信息
2006/10/09 PHP
php遍历数组的方法分享
2012/03/22 PHP
Laravel框架在本地虚拟机快速安装的方法详解
2018/06/11 PHP
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
没有document.getElementByName方法
2013/08/19 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
form+iframe解决跨域上传文件的方法
2016/11/18 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
2017/07/18 Javascript
js动态引入的四种方法
2018/05/05 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
vue中使用vee-validator完成表单校验方案
2019/11/01 Javascript
vue.js循环radio的实例
2019/11/07 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
python基础教程之基本内置数据类型介绍
2014/02/20 Python
Python去除列表中重复元素的方法
2015/03/20 Python
python简单实现计算过期时间的方法
2015/06/09 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
2016/03/14 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
Python使用for生成列表实现过程解析
2020/09/22 Python
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
国际政治个人自荐信范文
2013/11/26 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
羽毛球社团活动总结
2014/06/27 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
思想品德评语大全
2014/12/31 职场文书
公司人事管理制度
2015/08/05 职场文书
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS
Java服务调用RestTemplate与HttpClient的使用详解
2022/06/21 Java/Android