首页> 实战笔录 >PHP开发笔记 >ThinkPHP ThinkPHP
TP5 接口设计中异常处理
作者:小萝卜 2019-11-21 【 TP5 】 浏览 1947
简介PHP提供 Exception 类来处理异常,new Exception('错误信息(默认为空)','错误代码(默认0)','异常链中前一个异常')然后可以通过,e -> getMessage() 获取异常信息,e -> getCode() 获取异常错误码
PHP提供 Exception 类来处理异常
new Exception('错误信息(默认为空)','错误代码(默认0)','异常链中前一个异常')
然后可以通过
e -> getMessage() 获取异常信息
e -> getCode() 获取异常错误码
处理异常
try {
//可能抛出异常代码
throw new Exception("Error Processing Request", 1);
} catch (Exception $e) {
// 1. 记录日志
// 2. 处理异常,程序继续进行 / 继续向上抛出异常 / 终止程序,打印异常错误
}
在ThinkPHP中,框架自带异常处理类,返回错误信息以HTML页面形式展示,如果程序出现错误开发人员没有主动捕捉异常,则会被框架捕捉,然后抛出HTML
当在接口设计中时,由于无法得知客户端类型,所以HTML的形式客户端可能无法解析,此时便需要重写异常类,以json的形式返回错误信息给客户端
异常分类:
- 自定义异常:通常是由客户端传递参数错误导致,此类异常不需要记录日志,但需要返回错误原因
- 服务器异常:代码错误导致异常,此类异常需要记录日志,但不需要返回错误原因
服务器异常错误一般由PHP或者框架抛出,自定义异常需要手动捕捉,然后抛出
实现:
在Application/common目录下新建 exception 目录,此目录为异常类库目录
Application/common/exception/ExceptionHandler (重写后的异常处理类)
这个类会判断异常来源,并作出相应处理
创建处理类后,需要修改对应配置文件,让这个类成为框架默认异常处理类
在application/config/app.php
// 异常处理handle类 留空使用 thinkexceptionHandle
'exception_handle' => 'appcommonexceptionExceptionHandler',
Application/common/exception/BaseException (自定义异常类基类,基础PHP自带异常类Exception)
自定义异常类
Application/common/exception/UserException (自定义异常,这里举例User模块的异常)
抛出自定义异常
此时异常展示不再是TP自带的HTML页,而是
很赞哦! (0)
相关文章
- ThinkPHP5/tp通用 redis锁 源码分享
- TP5.1 钩子与行为应用
- TP6 TP5一键生成sitemap站点地图 代码分享
- TP5.1微信小程序支付功能服务器端代码分享
- TP6/ThinkPHP6修改Session存活时间
- TP6 TP5一键生成sitemap站点地图索引文件 代码分享
- TP5.0 给图片加文字水印怎么控制文字的透明度
- TP5.1实现微信小程序用户登录后端代码分享
- TP6报错:Non-static method think\Request::controller() should not be called statically
- TP6定义常量报错:Use of undefined constant CONTROLLER_NAME - assumed 'CONTROLLER_NAME'