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

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

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

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

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

分析了两种情况之后首先创建应对第一种情况的类,命名为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. verilog 移位运算符 说明_Verilog学习笔记基本语法篇(二)·········运算符...
  2. 教你如何完全解析Kotlin中的注解
  3. bugly android8.1加固,2020-09-27 Bugly Android热更新使用指南
  4. node.js 模块_如何创建Node JS可重用模块
  5. DockOne微信分享(一一零):Docker在沪江落地的实践
  6. Python编写杨辉三角形
  7. 普通人适合哪种O2O创业模式 O2O模式的应用价值是什么?
  8. python爬取拼多多数据 verifyauthtoken_拼多多TOKEN授权
  9. vagrant up 时提示错误 cound not open file
  10. 计算机光驱启动设置,光驱启动怎么设置
  11. 非负数的正则表达式匹配
  12. 软件测试工程师面经2022-1-22
  13. Java零基础学习记录09(飞机躲避炮弹游戏实现)
  14. 16秋南开计算机应用答案,南开16秋学期《计算机应用基础》在线作业.doc
  15. coreldraw x8里线段显示尺寸_CorelDRAW X8如何精确添加辅助线
  16. Hypermesh2D网格划分实例1
  17. 使用vigil 监控微服务系统包含可视化界面
  18. C++中的dynamic_cast和dynamic_pointer_cast
  19. 配置静态路由——默认路由
  20. 清除文件用其他应用默认打开方式

热门文章

  1. 无限弹窗(bat代码 整人恶作剧)
  2. Jmeter安装及简单使用
  3. Python基础语法(if语句)
  4. 计算机编程语言分类与区别
  5. xencenter如何安装系统
  6. Jupyter Notebook介绍
  7. linux内核源码分析系列文章汇总
  8. linux系统 nvme驱动模块,Linux 5.5最终通过HWMON公开NVMe驱动器温度
  9. 2020年软考信息安全工程师教程第2版
  10. uni-app的生命周期