当前位置: 首页 > news >正文

网站品牌推广设计泉州做网站的公司

网站品牌推广设计,泉州做网站的公司,手机网站维护费,wordpress 酒店文章目录 1 定义错误码类2 定义业务异常类3 全局异常处理器4 使用5 前端请求效果总结 1 定义错误码类 ​ 可以定义各种错误码枚举,比如业务,系统相关的报错信息 /*** 错误代码* 错误码** author leovany* date 2023/09/23*/ public enum ErrorCode {SU…

文章目录

  • 1 定义错误码类
  • 2 定义业务异常类
  • 3 全局异常处理器
  • 4 使用
  • 5 前端请求效果
  • 总结

1 定义错误码类

​ 可以定义各种错误码枚举,比如业务,系统相关的报错信息

/*** 错误代码* 错误码** @author leovany* @date 2023/09/23*/
public enum ErrorCode {SUCCESS(0, "success", ""),ERROR_PARAMS(40000, "请求参数错误", ""),ERROR_NULL(40001, "请求数据为空", ""),ERROR_LOGIN(40100, "未登录", ""),ERROR_NO_AUTH(41001, "无权限", ""),ERROR_SYSTEM(50000, "系统内部异常", "");/*** 错误码ID*/private final int code;/*** 错误码信息*/private final String message;/*** 错误码描述(详情)*/private final String description;ErrorCode(int code, String message, String description) {this.code = code;this.message = message;this.description = description;}public int getCode() {return code;}public String getMessage() {return message;}public String getDescription() {return description;}
}

2 定义业务异常类

  • 相对于 java 的异常类,支持更多字段

    扩展了 codedescription两个字段

  • 自定义构造函数,更灵活 / 快捷的设置字段

import com.leovany.usercenter.common.ErrorCode;/*** 业务异常* 自定义业务异常类** @author leovany* @date 2023/09/23*/
public class BusinessException extends RuntimeException {/*** 错误码*/private final int code;/*** 描述*/private final String description;/*** 业务异常** @param message     信息* @param code        错误码* @param description 描述*/public BusinessException(String message, int code, String description) {super(message);this.code = code;this.description = description;}/*** 业务异常** @param errorCode 错误代码*/public BusinessException(ErrorCode errorCode) {super(errorCode.getMessage());this.code = errorCode.getCode();this.description = errorCode.getDescription();}/*** 业务异常** @param errorCode   错误代码* @param description 描述*/public BusinessException(ErrorCode errorCode, String description) {super(errorCode.getMessage());this.code = errorCode.getCode();this.description = description;}public int getCode() {return code;}public String getDescription() {return description;}
}

3 全局异常处理器

  • 通过Spring AOP实现,在调用方法前后进行额外的处理

  • 作用

    • 捕获代码中所有的异常,让前端得到更详细的业务报错信息
    • 屏蔽掉项目框架本身的异常,不暴露服务器的内部状态
    • 集中处理,比如还可以做记录日志
import com.leovany.usercenter.common.ResultVO;
import com.leovany.usercenter.common.ErrorCode;
import com.leovany.usercenter.common.ResultUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;/*** 全局异常处理类*/
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {/*** 处理异常-BusinessException* @param e* @return*/@ExceptionHandler(BusinessException.class)public ResultVO<?> businessExceptionHandler(BusinessException e){log.error("businessException:" + e.getMessage(),e);return ResultUtils.error(e.getCode(),e.getMessage(),e.getDescription());}/*** 处理异常-RuntimeException* @param e* @return*/@ExceptionHandler(RuntimeException.class)public ResultVO<?> runtimeExceptionHandler(RuntimeException e){log.error("runtimeException:" + e);return ResultUtils.error(ErrorCode.ERROR_SYSTEM,e.getMessage());}
}

4 使用

throw new BusinessException可以在方法中,任意地方抛出,很方便

  • 示例代码
@PostMapping("/login")
public ResultVO<User> userLogin(@RequestBody UserLoginRequest userLoginRequest, HttpServletRequest request) {String userAccount = userLoginRequest.getUserAccount();String userPassword = userLoginRequest.getUserPassword();if (StringUtils.isAnyBlank(userAccount, userPassword)) {throw new BusinessException(ErrorCode.ERROR_PARAMS);}User user = userService.doLogin(userAccount, userPassword, request);return ResultUtils.success(user);
}
  • 代码对比

image-20230923231424717

5 前端请求效果

image-20230923232720326

总结

​ 通过封装全局异常处理,对异常信息做了统一处理,让前端得到更详细的业务信息,同时保证系统的安全性(不会暴露系统内部信息),在代码上对参数校验等方面提供更加方便的形式。

http://www.yayakq.cn/news/892923/

相关文章:

  • 贵阳建站推广公司宝安新闻最新消息今天
  • 千图主站的功能介绍东莞网站建设业务的公司
  • 济南美赞网站建设公司wordpress自适应菜单
  • 空投注册送币网站怎么做四川建设网四川住建厅
  • 网站建设网络科技公司加盟狗和女人做的网站
  • 网站策划 要求企业所得税怎么算举例
  • 自己做网站步骤 域名成都网站外包公司
  • 网站建设建网站年轻的母亲网站建设介绍推广用语
  • wordpress站点标题副标题换行ios认证 东莞网站建设
  • 湖南营销型网站建设 皆来磐石网络关闭微信小程序入口
  • 做系统简单还是网站简单网站建设销售招聘
  • seo网站排名的软件德宏做网站
  • 电商类网站建设需要多少钱为什么我的网站备案通过还是显示未备案
  • 网站开发和移动开发WordPress卡密充值怎么用
  • 烟台做网站的价格建站收入
  • 企业建设好一个网站后_如何进行网站推广?免费域名注册网站哪个好
  • 卖建材的网站广州今天新闻
  • 成都企业网站seo技术响应式布局网站实例
  • 湖北省住房和城乡建设厅门户网站wordpress对接公众号源码
  • 如何做盗版小说网站安徽六安职业技术学院
  • 网站开发商品管理表字段折叠分类目录模板wordpress
  • 昌网站建设wordpress 内容页面
  • 江门网站制作方案定制网络推广培训哪里好
  • 制作网站域名需要多少钱泉州百度seo公司
  • 海外seo网站建设专业深圳网站建设公司
  • windows软件开发台州网站优化
  • 网站排名张家港电子商务网站建设与管理试卷6
  • 哪里有专业做网站的wordpress centos6
  • 湖南省建设信息网站网站建设哪里学
  • 电商网站介绍谷歌搜索引擎下载