课程名称:Spring Cloud 进阶 Alibaba 微服务体系自媒体实战
课程章节: 第3章 开发通行证有关服务
主讲老师: 风间影月
课程内容
对于一些小系统来讲,出现异常直接抛就行,甚至不规范的使用,但是我们这里规范一些,引入自定义异常,这么一来可以更加规范我们的项目。
但是本课程的学习当中,希望将系统做大做强,以及为后期将系统改成微服务化做准备。
如果对异常信息进行了封装。具体参考如下:
package com.imooc.exception; import com.imooc.grace.result.ResponseStatusEnum; /** * 优雅处理异常,统一封装 */ public class GraceException { public static void display(ResponseStatusEnum responseStatus) { throw new MyCustomException(responseStatus); } }
package com.imooc.exception; import com.imooc.grace.result.ResponseStatusEnum; import com.imooc.utils.MD5Utils; /** * 自定义异常 * 目的:1. 统一异常处理和管理 * 2. service与controller错误解耦,不会被service返回的类型而限制 * * RuntimeException: 没有侵入性,如果继承Exception,则代码中需要使用try/catch */ public class MyCustomException extends RuntimeException { private ResponseStatusEnum responseStatus; public MyCustomException(ResponseStatusEnum responseStatus) { super("异常状态码: " + responseStatus.status() + "; 异常信息: " + responseStatus.msg()); this.responseStatus = responseStatus; } public ResponseStatusEnum getResponseStatus() { return responseStatus; } public void setResponseStatus(ResponseStatusEnum responseStatus) { this.responseStatus = responseStatus; } }
package com.imooc.exception; /** * 统一异常拦截处理 * 可以针对异常类型进行补货处理,然后返回信息到页面 */ @ControllerAdvice public class GraceExceptionHandler { final static Logger logger = LoggerFactory.getLogger(GraceExceptionHandler.class); /** * 只要抛出MyCustomException,就会被此方法拦截到,随后可以自定义处理 * @param e * @return */ @ExceptionHandler(MyCustomException.class) @ResponseBody public GraceJSONResult returnMyException(MyCustomException e) { logger.error(e.getMessage()); e.printStackTrace(); return GraceJSONResult.exception(e.getResponseStatus()); } }
// 最终只需要调用如下方法即可 GraceException.display(ResponseStatusEnum.SMS_NEED_WAIT_ERROR);
课程收获
在开发中,如果用try catch的方式,每个方法都需要单独实现,为了方便分类异常,返回给前端,采用了@ControllerAdvice注解和继承了RuntimeException的方式来实现。
通常情况下是捕获三类异常
1.业务异常:BusinessException
2.系统异常 :SystemException
3.其他异常:利用@ExceptionHandler(RuntimeException.class)去捕获
ExceptionAdvice类捕获以上三类异常,并返回自定义类型格式数据
课程截图
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦