在项目的开发过程中异常抛出尤为重要不仅能够做出友好提示帮助掩盖我们伟大的程序员们尴尬的瞬间,还能做到提示开发人员代码白编写的错误,下面进行自定义异常抛出类,纯属个人理解,希望大家指正

首先在框架中我们可以自定义目录结构用来做异常类的存储位置例如文件目录为以下红框中

定义目录结构后阐述一下我理解的异常类的工作流程,见名知意既然是异常抛出那么只有在代码出现问题的时候或者是逻辑出现异常的时候会进行抛出,那么我认为这就会出现两种情况,

第一种是用户传输的参数或者用户操作的流程有问题这种情况下并不是我们的开发的代码或者是业务逻辑出现的致命错误,直白的将这种情况就是用户的请求没有返回相应的数据

第二种是我们的代码存在问题,或者是服务器上面的问题,但是这个问题我们是不需要用户知道的,在这种情况下我们即需要给出用户的友好提示,还需要知道我们的代码具体是哪里出现了问题所以这种情况下我们就需要记录日志

分析了两种情况之后首先创建应对第一种情况的类,命名为BaseException.php在这个类中需要定义的很简单就是对应第一种情况的友好信息

信息中包括的是抛出异常的http状态码、异常的信息、自定义异常的状态码(可选)

但是BaseException.php需要继承Exception虽然我们是自己定义的异常类但是还是需要遵循规律,既然要抛出异常,就需要有捕获异常,BaseException.php代码如下

下面看一下官方手册

很明显官方已经指出我们接下来要做的

定义Z_Exception.php用来继承Handle类并且重写render方法,这样我们就可以将我们自定义的信息进行抛出,并且在这个类中穿插判断用来应对第二种异常的情况

至此存在一个值得注意的问题在config.php中的问题, 自己已经自定义了异常类的要填上!!!!

本身此处为空但我们已经自己定义了异常类,如果没有更改的话会导致致命错误这里大家应该值得注意一下!!!

处理之后继续下一步添加日志

通过入口文见index.php可以追踪到框架的核心文件start.php打开之后看到加载base.php然后打开base.php就可以看到文件的配置项找到log查看文件的路径

由此可以定位到log文件的路径

由此我们更改一下log的路径方便我们以后管理,在index.php中重新定义LOG_PATH的路径

更改文件的路径后我们应该将框架中默认的记录日志的方式进行更改可以参考官方的文档

https://www.kancloud.cn/manual/thinkphp5/118126

更改框架中的日志的记录方式就是在config.php查找Log模块,将日志的type由File更改为test

既然日志是为了应对生产环境下的问题那么我在代码编写的时候就应该在

之后进行日志的记录,但是要是进行日志的记录我们就应该使用框架中的Log类

在Z_Exception.php中定义方法用来写入日志

然后再调用

这样就完成了自定义的类和自定义的日志文件

tp5 ThinkPHP5 自定义异常处理类的更多相关文章

  1. springmvc自定义异常处理类和<mvc:annotation-driven/>自带异常处理优先级问题

    自定义异常类的优先级低于注解驱动的默认异常处理,所以可以给自定义异常处理类,实现一个排序的接口, org.springframework.core.Ordered 改接口的注释: /**  * {@c ...

  2. Asp.net MVC 自定义异常处理类

    using ElegantWM.Common; using System; using System.Collections.Generic; using System.Linq; using Sys ...

  3. SpringBoot系列教程web篇之自定义异常处理HandlerExceptionResolver

    关于Web应用的全局异常处理,上一篇介绍了ControllerAdvice结合@ExceptionHandler的方式来实现web应用的全局异常管理: 本篇博文则带来另外一种并不常见的使用方式,通过实 ...

  4. Spring MVC自定义统一异常处理类,并且在控制台中输出错误日志

    在使用SimpleMappingExceptionResolver实现统一异常处理后(参考Spring MVC的异常统一处理方法), 发现出现异常时,log4j无法在控制台输出错误日志.因此需要自定义 ...

  5. thinkphp5底层基类封装、内部类函数

    记录下thinkphp5自定义底层基类.内部类函数使用笔记 大部分笔记来自tp手册. 底层常用代码的封装 在控制器中基类的起着至关重要的作用,整个项目的代码安全,复杂程度,易读性都要看你项目的基类架构 ...

  6. php 异常处理类

    PHP具有很多异常处理类,其中Exception是所有异常处理的基类. Exception具有几个基本属性与方法,其中包括了: message 异常消息内容code 异常代码file 抛出异常的文件名 ...

  7. 扩展PHP内置的异常处理类

    在try代码块中,需要使用throw语句抛出一个异常对象,才能跳到转到catch代码块中执行,并在catch代码块中捕获并使用这个异常类的对象.虽然在PHP中提供的内置异常处理类Exception,已 ...

  8. 【Flask】abort和errorhandler、app_errorhandler进行请求中断及自定义异常处理

    在view函数中,如果需要中断request,可以使用abort(500)或者直接raise exception.当然我们还需要返回一个出错信息给前端,所以需要定制一下ErrorHandler.一般只 ...

  9. ASP.NET MVC自定义异常处理

    1.自定义异常处理过滤器类文件 新建MyExceptionAttribute.cs异常处理类文件

随机推荐

  1. python中模块、包、库的区别和使用

    模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...

  2. CPU内部结构图

      原文地址:http://blog.csdn.net/jiuyueguang/article/details/9350793

  3. [Luogu] 无线网络发射器选址

    https://www.luogu.org/problemnew/show/P2038 二维前缀和 #include <iostream> #include <cstdio> ...

  4. Codevs 1298 凸包周长

    1298 凸包周长 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 给出平面上n个点,求出这n个点形成的凸包的周长. 凸包的定 ...

  5. Codevs 4909 寂寞的堆

    4909 寂寞的堆 时间限制: 1 s 空间限制: 8000 KB 题目等级 : 大师 Master 题目描述 Description 堆,是一种神奇的数据结构 不寂寞的堆,是一棵满二叉树,其儿子节点 ...

  6. 转载:在Excel中将数据库字段转换成驼峰式

    转载地址 在Excel中将数据库字段转换成驼峰式 1.将数据库字段复制到Excel表格第一列: 2.在第二列顶部输入=PROPER(A1)命令: 3.在第三列顶部输入=SUBSTITUTE(B1,&q ...

  7. JAVA单元测试的用法和要点

      2018年09月25日 10:11:18 琼歌 阅读数 5192   版权声明:禁止转载 https://blog.csdn.net/qq_36505948/article/details/827 ...

  8. No Desktop License Servers available to provide a license

    远程桌面连接失败,提示:“no Remote Desktop License Servers available to provide a license” 原因:没有remote desktop l ...

  9. 提高组刷题营 DAY 1 下午

    DFS 深度优先搜索 通过搜索得到一棵树形图 策略:只要能发现没走过的点,就走到它.有多个点可走就随便挑一个,如果无路可走就回退,再看有没有没走过的点可走. 在图上寻找路径[少数可用最短路解决]:最短 ...

  10. Android解决AVD Hardware Buttons 和DPAD无法使用问题

    如图所示按键用鼠标点击时无法响应. 解决方案: 以我创建的AVD名为Tablet为例 1.找到用户目录(我的用户目录yummy),然后进入如下目录 mac: ~/yummy/.android/avd/ ...