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

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

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

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

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

分析了两种情况之后首先创建应对第一种情况的类,命名为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 mysql异常捕获_tp5 ThinkPhp5 自定义异常处理类相关推荐

  1. tp5 ThinkPHP5 自定义异常处理类

    tp5 ThinkPHP5 自定义异常处理类 参考文章: (1)tp5 ThinkPHP5 自定义异常处理类 (2)https://www.cnblogs.com/pyspang/p/11095414 ...

  2. c mysql异常捕获异常,c#基础之异常处理及自定义异常 从SQLServer转储数据到MySQL...

    一.什么是c#中的异常? 异常是程序运行中发生的错误,异常处理是程序的一部分.c#中的异常类主要是直接或者间接的派生于 System.Exception类 ,也就是说System.Exception类 ...

  3. SpringMVC 异常处理(简单异常处理器 SimpleMappingExceptionResolver;自定义异常处理需要实现HandlerExceptionResolver接口)

    一.SpringMVC 框架异常处理流程 二.异常处理的两种方式 三.简单异常处理器 SimpleMappingExceptionResolver 1.自定义异常类 package com.lt.ex ...

  4. C++异常处理类与自定义异常处理类

    转自:http://blog.csdn.net/makenothing/article/details/43273137 例1:自定义一个继承自excepton的异常类myException C++标 ...

  5. php简单异常,PHP实现的简单异常处理类示例

    具体如下: header('content-type:text/html;charset=UTF-8'); // 创建email异常处理类 class emailException extends e ...

  6. php mysql异常捕获_PHP中try{}catch{}的用法及异常处理.对数据库的事物支持

    try 只有抛出异常才能被catch捕获 public  function test1() { Db::startTrans(); // 事务 try{ // 第1条数据更新id 18 $a=Db:: ...

  7. springboot 上传异常捕获_Spring Boot 全局异常处理(下)

    可以搜索微信公众号[Jet 与编程]查看更多精彩文章 背景 在上篇[链接]中介绍了 Spring Boot 全局异常处理的一种方式,但那是一种全局性的容错机制,目的是把 Spring Boot 默认的 ...

  8. java 异常捕获抛出_JAVA异常处理捕获与抛出原理解析

    JAVA 异常 当代码运行出现错误导致程序终止运行或出现错误情况的状况,就是异常.异常不是指语法错误,即不属于编译错误,只有运行的程序才会有异常. 这个时候,JAVA 就提供了优秀的处理方法:异常处理 ...

  9. thinkphp5 mysql长连接_tp5(thinkPHP5)框架连接数据库的方法示例

    本文实例讲述了thinkPHP5框架连接数据库的方法.分享给大家供大家参考,具体如下: 1.配置文件目录 tp5applicationdatabase.php 通过配置文件来连接.. 也可以通过方法链 ...

  10. tp5 日期范围查询_tp5(thinkPHP5框架)时间查询操作实例分析

    本文实例讲述了tp5(thinkPHP5框架)时间查询操作.分享给大家供大家参考,具体如下: 在项目中 可能会遇到 跨月份进行查询 比如在 当输入201809 会获取当月的开始时间$start_mon ...

最新文章

  1. 讨论:对于神经网络,不需要弄明白原理,只需要应用,是这样吗?
  2. Centos 7.2搭建MariaDB数据库服务器应用与管理
  3. 方向向量转欧拉角_欧拉角、旋转向量和旋转矩阵的相互转换
  4. Android内核学习笔记
  5. Step By Step(Lua字符串库)
  6. 大数据量下 PageHelper 分页查询性能问题的解决办法
  7. mysql-日常命令使用汇总
  8. java如何实现英文翻译中文,22年最新
  9. CAD图纸无法编辑修改怎么回事?
  10. 科技感十足炫酷引导页网站源码
  11. 洞态IAST实现思路分享及讨论
  12. Mac上如何提取解压pkg文件
  13. Excel 高级筛选实现多条件筛选数据
  14. python画彩虹代码_python绘制彩虹图
  15. x264 i_thead
  16. 用python实现聚类分析
  17. 房产|1月全国70城房价出炉!疫情放开后你关心的城市房价有何变化
  18. 磁盘阵列 vga_什么是VGA(视频图形阵列)?
  19. Java 基本数据类型(八种基本数据类型)
  20. Lua开发--lua变量

热门文章

  1. linux下JMeter安装
  2. HTMLUnit爬虫模拟登录Linkedin
  3. js 打印组件的使用
  4. python将xml写入excel_Python实现将xml导入至excel
  5. 老主板BIOS不识别nvem固态硬盘,修改BIOS添加nvme驱动
  6. R语言建立ARIMA模型预测数据
  7. vba mysql_VBA连接Mysql数据库
  8. unity后期处理插件post process超级后期滤镜
  9. MacBook Pro macOS 安装 Linux 双系统教程(一)
  10. 软件设计师 下午题第4题