TP5:异常处理封装——3

如果不进过异常封装,如果抛出一异常只会只会上图所示,大部分时候,用户只需要知道Division by zero就够了。

1、首先先建一个类BaseException并继承Exception,这里有三个参数 $code =400; $msg ;  $errorCode ;并处理当抛出异常时的参数。

下面要用来一个面向截面的思想,我们打开config.php这个文件,找到exception_handle这一项,会发现“异常处理handle类 留空使用 \think\exception\Handle”这个字样,事实上,当我们不做处理时,抛出异常是会经过\think\exception\Handle处理,而现在我们要自己建处理Handle类。

   

代码如下,新建一个ExceptionHandler类并继承Handle基类,开始还是创建三个变量$code;$msg;$errorCode;并重写render方法,注:这里要使用use think\Exception,不然会出现HttpException这种异常会不能处理的情况,

class ExceptionHandler extends Handle
{private $code;private $msg;private $errorCode;
public function render(Exception $e)
{if($e instanceof BaseException){                 //是否为BaseException继承类$this->code =$e ->code;$this->msg =$e ->msg;$this->errorCode =$e ->errorCode;}else{if(config("app_debug")==true){              //如是开启调试,就走原来的方法return parent::render($e);}else{                                      //如是关闭调试,是未知错误,我们只需要统一回复$this->code = 500;$this->msg = 'sorry,we make a mistake. (^o^)Y';$this->errorCode = 999;$this->recodeErrorLog($e);                      //记录到日志中,这个下一节会讲}}$request = Request::instance();                      //参数实例$result=["msg"=> $this->msg,"errorCode" =>$this->errorCode,"require_url"=>$request->url()                   //取出访问时的URL];return json($result,$this->code);
}

做完上一步就可以说封装好了,当我们需要抛了特定的异常时,我们只需要在建一个类,如图MissException并继承BaseException如图所示。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399871.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口测试(java+testng+ant+jenkins)第三篇ant

1、ant是什么? 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具 2、下载安装 http://www.cnblogs.com/yuzhongwusan/archive/2013/03/26/2982411.html 3、在eclipce中的使用 准备工作: 项目右键——new——folder——folder name: li…

KVM虚拟机IO处理过程(二) ----QEMU/KVM I/O 处理过程

接着KVM虚拟机IO处理过程中Guest Vm IO处理过程(http://blog.csdn.net/dashulu/article/details/16820281),本篇文章主要描述IO从guest vm跳转到kvm和qemu后的处理过程. 首先回顾一下kvm的启动过程(http://blog.csdn.net/dashulu/article/details/17074675).qemu通过调用kvm提供…

如何利用echarts图表获取条状图点击名称和值

如何利用echarts图表获取条状图点击名称和值 听语音 |浏览:1505|更新:2017-06-13 10:20|标签:软件 1 2 3 4 5 6 7 分步阅读 echarts图表插件工具,包含了各种不同类型的图形,有圆饼图、折线图、圆环图、柱状图…

TP5: 日志记录改造——4

TP5的日志如果没有特别设置的话,只要出现错误就会记录在日志文件中。这种是没有做必要的,因为这样的话,LOG文件会特别大,而且有好多都是没有用的信息。下面我们对LOG日志进行改造只记录我们需要的信息。 还记得上一章中&#xff…

.NET使用免费开源类库操作Excel

2019独角兽企业重金招聘Python工程师标准>>> 自从上次找到NPOI之后,根据园友提供的线索以及Google,又找到了一些开源免费的类库,所以都简单体验了一遍。 主要找到以下类库: MyXls(http://sourceforge.net/projects/m…

JMS 消息处理

转载于:https://www.cnblogs.com/luswei/p/7504781.html

设计模式(单例)

单例模式是最简单的设计模式, 意图: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 适用性: 只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 当这个唯一实例应该是通过子类化可扩展的,并且客户…

牛刀小试、用SharePoint 实现请假管理功能

转:http://www.cr173.com/html/15518_1.html “请假管理”应用,应该算是 SharePoint 的“Hello World!”、川菜里面的鱼香肉丝、粤菜里面的蛋炒饭 。。。吧? 怎么样才能做出简易、实用的请假管理,一直都是都是一个问题…

django时区设置问题

2019独角兽企业重金招聘Python工程师标准>>> 最近用Django开发项目,在使用datetime类获取.now()时,获取的时间比实际时间相差8小时左右(感觉是UTC时间),服务器使用的时区是“Asia/Shanghai”(08…

Objective-C模版方法(TemplateMethod)

什么是模版方法? 官方:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模版方法使子类可以重新定义算法的某些步骤而不改变算法的结构。 个人理解:模版方法没必要刻意去理解,平时的编码过程中不知不觉就会用到…

微信小程序+TP5——token令牌生成

token令牌的作用:客户端每次登录服务器端都会生成一个唯一的token令牌值,并返回到客户端,而服务器端会默认将token令牌值作为key, 用户信息作为value,一一对应存入缓存中,当用户每一次发送请求时,都要携带这…

基于live555实现的RTSPServer对底层进行性能优化的方法

在博客《EasyIPCamera高性能摄像机RTSP服务器RTSPServer解决方案》我介绍了基于live555实现的一套RTSPServer功能组件,当时开发者经过几个月的调试,已经将底层的性能调试到了一个业界非常优秀的程度,主要优化的几点: 发送优化调度…

sqlite 字符串 转 整型 cast 函数 (强制类型转换 )

sqlite 字符串 转 整型使用 cast 函数 语法: cast(col_name as type) 例子: 表:JobInfo 表内字段:Salary 薪水 select * from JobInfo where cast(substr(Salary,1,5)as int)>10000 结果集: 转载于:https://www.cn…

2018.2.2PHPstrom破解版

--------------------- 作者:聽の雨ぷ 来源:CSDN 原文:https://blog.csdn.net/qq_39439751/article/details/82758330 版权声明:本文为博主原创文章,转载请附上博文链接! 首先将我为大家事先准备好的打…

Arduino 端口通信实例

// //Arduino 1.0.x-----Arduino Uno----COM9 //使用3-10号引脚连接8个LED // int incomingByte 0; //输入的数据存储变量 int count1; void setup() {Serial.begin(9600);// opens serial port, sets data rate to 9600 bpsfor(int i3;i<10;i)//打开3-10号引脚pinMode(i…

Flask文件上传

https://zhuanlan.zhihu.com/p/23731819 Flask文件上传&#xff08;一&#xff09;&#xff1a;原生实现 李辉 greyli.com 87 人赞同了该文章 文件上传是个躲不掉的问题&#xff0c;用户头像&#xff0c;文章图片&#xff0c;文件分享等等都需要上传功能。但这里涉及很多内…

Android核心分析之二十七Android GDI 之SurfaceFlinger之动态结构示

SurfaceFlinger对象建立过程示意  1 SurfaceSession的建立  客户端请求建立Surface时&#xff0c;首先在要与SurfaceFlinger建立一个Session&#xff0c;然后再Session上建立一个Connection通过概念返回Bclient对象。WindowManagerService在添加第一个窗口前会检查SurfaceS…

maven详解之坐标与依赖

2019独角兽企业重金招聘Python工程师标准>>> 看着简单而又复杂的pom.xml文件&#xff0c;看似熟悉&#xff0c;当自己编写的时候觉得简单&#xff0c;但是看人家项目的时候又觉得复杂的很&#xff0c;现在我们一起来分析这个pom文件。 Maven的坐标为各种构件引入了秩…

EF6源码学习-准备篇

现在对于。net开发人员来说EF已经很流行了&#xff0c;虽然我在2010年的时候就用过EF&#xff0c;也看过几本书&#xff0c;但是还没有仔细研究EF的code&#xff0c; 曾经也尝试阅读EF5的源代码&#xff0c;后来由于时间关系也没有坚持住。现在计划阅读EF6 code first部分的源码…