【备战春招】第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-12-20微信小程序开发入门指南
- 2024-12-20小程序 createCameraContext() 怎么实现识别条形码功能?-icode9专业技术文章分享
- 2024-11-22微信小程序的接口信息py可以抓到吗?-icode9专业技术文章分享
- 2024-11-22怎样解析出微信小程序二维码带的参数?-icode9专业技术文章分享
- 2024-11-22微信小程序二维码怎样解析成链接?-icode9专业技术文章分享
- 2024-11-22微信小程序接口地址的域名需要怎么设置?-icode9专业技术文章分享
- 2024-11-22微信小程序的业务域名有什么作用-icode9专业技术文章分享
- 2024-11-22微信小程序 image有类似html5的onload吗?-icode9专业技术文章分享
- 2024-11-22微信小程序中怎么实现文本内容超出行数后显示省略号?-icode9专业技术文章分享
- 2024-11-22微信小程序怎么实现分享样式定制和图片定制功能?-icode9专业技术文章分享