SpringBoot 统一异常处理
2018-11-21 21:11
645 查看
一般在SpringBoot中需要处理的异常有下面几种类型:
- 404
- 500
- 业务异常(JSON数据)
404 一般由默认的error页面处理
原理:由于SpringBoot中默认设置是由templates下面的error来处理404
而500则由@ControllerAdvice(控制器增强)处理
原理:@ControllerAdvice注解是统一处理贴有@Controller注解的控制器抛出的异常,这个相当于控制器的切面
具体代码如下:
import cn.wolfcode.p2p.base.util.JSONResult; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; /** * @所属项目 : springboot-ssm * @类的描述 : 异常统一处理 * @类的作者 : JOHN * @创建时间 : 2018年11月21日 10时43分 */ @ControllerAdvice public class ErrorControllerAdvice { //只会针对指定的异常类型做处理 @ExceptionHandler(CustomerException.class) @ResponseBody public JSONResult handleJSONException(Exception ex, Model model){ JSONResult jsonResult = new JSONResult(); jsonResult.mark(ex.getMessage()); return jsonResult; } //只会针对指定的异常类型做处理 @ExceptionHandler(RuntimeException.class) public String handle(Exception ex,Model model){ model.addAttribute("ex",ex.getMessage()); return "public/error/500"; } }
至于抛出的JSON格式的异常,上面已经给出
但是可以看到的是:由于JSON格式的异常一般都是业务异常,所以:
还需要定义一个业务异常,业务异常如下:
/** * @所属项目 : springboot-ssm * @类的描述 : 客户异常 * @类的作者 : JOHN * @创建时间 : 2018年11月21日 10时56分 * @说明 : 专门提供给用户的异常信息 */ public class CustomerException extends RuntimeException{ public CustomerException(String message) { super(message); } public CustomerException(String message, Throwable cause) { super(message,cause); } }阅读更多
相关文章推荐
- Spring Boot 异常统一处理
- 【SpringBoot】web进阶——表单验证,AOP统一处理请求日志,统一异常处理,单元测试
- SpringBoot学习之统一异常处理、404处理以及集成Swagger2
- Spring Cloud Spring Boot mybatis分布式微服务云架构(十一)Web应用的统一异常处理
- Spring Boot中Web应用的统一异常处理
- spring boot / cloud (十二) 异常统一处理进阶
- spring-boot统一处理返回给前台的数据格式(避免返回异常堆栈信息,干扰用户体验)
- SpringBoot 统一异常处理
- Springboot(统一异常处理)
- 【SpringBoot】Spring Boot进阶之Web进阶( 第2章 Web进阶- 统一异常处理 )
- Spring Boot中Web应用的统一异常处理
- Spring Boot中Web应用的统一异常处理
- springboot + shiro 权限注解、统一异常处理、请求乱码解决
- Spring Boot中使用AOP统一处理web层异常的方法
- Spring Boot统一异常处理详解
- spring-boot中统一异常处理
- Spring Boot中Web应用的统一异常处理
- 【SpringBoot】Http请求统一异常(返回数据)处理与单元测试
- Spring Boot中Web应用的统一异常处理
- spring boot之统一错误异常处理