【备战春招】第6天 微信小程序电商实战-异常处理
2023/2/15 4:24:13
本文主要是介绍【备战春招】第6天 微信小程序电商实战-异常处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
课程名称:微信小程序电商实战
课程章节:AOP 与全局异常处理
课程讲师:7 七月
课程内容:
- 全局异常处理
- 记录日志
- 统一返回错误信息格式
- 什么时候使用异常
- 用户行为异常(没有通过验证器,没有查询到结果):不记录日志、向用户返回具体信息
- 服务器自身异常(代码错,调用外部接口错误):记录日志,不向客户端返回具体信息
- 在 application 目录下创建文件夹 lib/exception(异常处理层-类库)
Exception 基类
class BaseException { // HTTP 状态码 public $code = 400; // 错误具体信息 public $msg = 'invalid parameters'; // 自定义错误码 public $errorCode = 999; public $shouldToClient = true; /** * 构造函数,接收一个关联数组 * @param array $params 关联数组只应包含code、msg和errorCode,且不应该是空值 */ public function __construct($params=[]) { if(!is_array($params)){ return; } if(array_key_exists('code',$params)){ $this->code = $params['code']; } if(array_key_exists('msg',$params)){ $this->msg = $params['msg']; } if(array_key_exists('errorCode',$params)){ $this->errorCode = $params['errorCode']; } } }
Exception 子类
class BannerMissException extends BaseException { public $code = 404; public $msg = '参数错误'; public $errorCode = 40000; }
Handle 异常处理类
class ExceptionHandler extends Handle { private $code; private $msg; private $errorCode; public function render(Exception $ex) { if($e instanceof BaseException) { //如果是自定义异常,则控制http状态码,不需要记录日志 //因为这些通常是因为客户端传递参数错误或者是用户请求造成的异常 //不应当记录日志 $this->code = $e->code; $this->msg = $e->msg; $this->errorCode = $e->errorCode; } else { // 如果是服务器未处理的异常,将http状态码设置为500,并记录日志 if(config('app_debug')){ // 调试状态下需要显示TP默认的异常页面,因为TP的默认页面 // 很容易看出问题 return parent::render($e); } $this->code = 500; $this->msg = 'sorry, we make a mistake. (^o^)Y'; $this->errorCode = 999; $this->recordErrorLog($e); } $request = Request::instance(); $result = [ 'msg' => $this->msg, 'error_code' => $this->errorCode, 'request_url' => $request = $request->url() ]; return json($result, $this->code); } }
config.php 配置
exception_handle => 'app\lib\exception\ExceptionHandler'
ParameterException 通用参数类异常错误
class ParameterException extends BaseException { public $code = 400; public $errorCode = 10000; public $msg = "invalid parameters"; }
课程收获:
- 开发 api 和开发网页是截然不同的,特别是错误返回的处理
- 了解 render 机制
- 预习:调用异常类抛出信息,TP5 日志处理
这篇关于【备战春招】第6天 微信小程序电商实战-异常处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-13微信小程序如何封装接口域名?-icode9专业技术文章分享
- 2024-11-13如何在微信小程序中实现直传功能?-icode9专业技术文章分享
- 2024-11-13如何在小程序的地图组件中添加标记和文字?-icode9专业技术文章分享
- 2024-11-13在微信小程序的地图组件中如何实现自定义标记和气泡?-icode9专业技术文章分享
- 2024-11-01微信小程序教程:零基础入门到实战
- 2024-11-01微信小程序全栈教程:从入门到实践
- 2024-10-31微信小程序怎么实现关注公众号功能-icode9专业技术文章分享
- 2024-10-30微信小程序cover-view,支持bindtap吗-icode9专业技术文章分享
- 2024-10-30微信小程序的cover-image支持bindtap吗-icode9专业技术文章分享
- 2024-10-30微信小程序web-view怎么设置高度?-icode9专业技术文章分享