`

基于spring boot的统一异常处理

阅读更多

一、springboot的默认异常处理

Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展示异常内容。

了解springcloud架构可以加求求:三五三六二四七二五九

例如这里我们认为制造一个异常

  @GetMapping(value = "/boys")
    public List<Boy> boyList() throws Exception{
        throw new Exception("错误");
    }

 使用浏览器访问http://127.0.0.1:8080/boys

 二、自定义的统一异常处理

虽然Spring Boot中实现了默认的error映射,但是在实际应用中,上面你的错误页面对用户来说并不够友好,我们通常需要去实现我们自己的异常提示。

1) 统一的异常处理类(com.dechy.handle)

@ControllerAdvice
public class ExceptionHandle {

    private final static Logger logger = LoggerFactory.getLogger(ExceptionHandle.class);

    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public Result handle(Exception e) {
        if (e instanceof BoyException) {
            BoyException boyException = (BoyException) e;
            return ResultUtil.error(boyException.getCode(), boyException.getMessage());
        }else {
            logger.error("【系统异常】{}", e);
            return ResultUtil.error(-1, "未知错误");
        }
    }
}

  2)自定义异常类(com.dechy.exception)

public class BoyException extends RuntimeException{

    private Integer code;

    public BoyException(ResultEnum resultEnum) {
        super(resultEnum.getMsg());
        this.code = resultEnum.getCode();
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }
}

 3)返回结果枚举(com.dechy.enums)

public enum ResultEnum {
    UNKONW_ERROR(-1, "未知错误"),
    SUCCESS(0, "成功"),
    TOOSHORT(100, "身高太矮"),
    TOOHIGH(101, "身高太高"),

    ;

    private Integer code;

    private String msg;

    ResultEnum(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public Integer getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }
}

 4)返回结果工具类(com.dechy.util)

public class ResultUtil {

    public static Result success(Object object) {
        Result result = new Result();
        result.setCode(0);
        result.setMsg("成功");
        result.setData(object);
        return result;
    }

    public static Result success() {
        return success(null);
    }

    public static Result error(Integer code, String msg) {
        Result result = new Result();
        result.setCode(code);
        result.setMsg(msg);
        return result;
    }
}

 5)Boy实体类(com.dechy.model)

@Entity
public class Boy {

    @Id
    @GeneratedValue
    private Integer id;

    @NotBlank(message = "这个字段必传")
    private String height;

    @Min(value = 100, message = "体重必须大于100")
    private BigDecimal weight;

    public Integer getId (){
        return id;
    }

    public void setId (Integer id){
        this.id = id;
    }

    public String getHeight (){
        return height;
    }

    public void setHeight (String height){
        this.height = height;
    }

    public BigDecimal getWeight (){
        return weight;
    }

    public void setWeight (BigDecimal weight){
        this.weight = weight;
    }

    @Override
    public String toString (){
        return "Boy{" + "id=" + id + ", height='" + height + '\'' + ", weight=" + weight + '}';
    }
}

 6)业务层具体使用时抛出异常,等待统一处理(com.dechy.service)

public void chooseBoy(Integer id) throws Exception{
        Boy boy= boyRepository.findOne(id);
        Integer height= boy.getHeight();
        if (height < 100) {
            //返回"身高矮" code=100
            throw new BoyException(ResultEnum.TOOSHORT);
        }else if (height > 200) {
            //返回"身高太高" code=101
            throw new BoyException(ResultEnum.TOOHIGH);
        }//...
    }

 

分享到:
评论

相关推荐

    基于 Spring Boot 编写出的统一返回数据结构处理和统一异常处理的插件

    基于 Spring Boot 编写出的统一返回数据结构处理和统一异常处理的插件 使用之前,首先:不要使用Object类型返回,否则返回为null时,不会拦截到** 配置项 # 根注释 veedo: # 统一拦截配置模块 ragdoll: # 统一...

    基于spring boot实现根据经纬度坐标返回所在行政区域

    4. **错误处理和异常处理**:为了提供健壮的服务,我们需要处理可能出现的网络错误、API调用失败等情况。Spring Boot提供了全局异常处理器,可以通过`@ControllerAdvice`和`@ExceptionHandler`注解来统一处理这些...

    基于Spring Boot框架的后台管理系统.zip

    基于Spring Boot框架的后台管理系统 项目简介 本项目是一个基于Spring Boot Thymeleaf Layui Apache Shiro Redis... 统一异常处理实现统一异常处理机制。 Token角色权限认证使用Shiro Redis实现Token角色权限认证。

    基于Spring Boot的文件预览系统.zip

    全局异常处理通过自定义异常处理器,统一处理系统中的异常,并返回友好的错误信息。 配置管理 Swagger配置通过配置Swagger,生成API文档,方便前后端开发人员查看和测试API。 文件大小限制通过配置文件,设置...

    基于Spring Boot框架的ELADMIN后台管理系统.zip

    基于Spring Boot框架的ELADMIN后台管理系统 项目简介 ELADMIN是一个基于Spring Boot 2.1.0、Spring Boot Jpa、JWT、Spring Security、Redis... 统一异常处理前后端统一异常拦截处理,统一输出异常,避免繁琐的判断。

    基于Spring Boot框架的导师学生双选系统.zip

    系统支持学生提交志愿、导师审核志愿、管理员管理志愿等功能,通过统一响应结果封装、统一异常处理、接口签名认证等技术手段,确保系统的稳定性和安全性。 项目的主要特性和功能 最佳实践的项目结构提供了一个...

    基于Spring Boot框架的知学后台管理系统.zip

    基于Spring Boot框架的知学后台管理系统 项目简介 知学后台管理系统是一个基于Spring Boot 2.1.0、Spring Boot Jpa、JWT、Spring Security、... 统一异常处理前后端统一异常拦截处理,统一输出异常,避免繁琐的判断。

    基于Spring Boot框架的动漫图片爬虫系统.zip

    基于Spring Boot框架的动漫图片爬虫系统 内容概要 本项目是一个基于Spring Boot框架的动漫图片爬虫系统,主要功能是从指定网站爬取动漫图片,并将图片信息存储到... 支持API访问限制和统一异常处理,确保系统稳定性。

    基于Spring Boot的设备管理系统.zip

    统一异常处理 简单的接口签名认证 常用基础方法抽象封装 使用Druid Spring Boot Starter 集成Druid数据库连接池与监控 使用FastJsonHttpMessageConverter,提高JSON序列化速度 集成MyBatis、通用Mapper插件、...

    基于Spring Boot框架的秒杀系统Demo.zip

    基于Spring Boot框架的秒杀系统Demo 项目简介 本项目是一个基于Spring Boot框架的秒杀系统Demo,旨在演示如何使用Spring Boot构建一个高效、安全的秒杀系统。项目涵盖了用户登录、商品展示、秒杀活动等核心功能,...

    基于Spring Boot的微信点餐系统.zip

    异常处理全局异常处理器统一处理业务异常。 日志记录使用SLF4J进行日志记录,便于问题追踪。 技术栈 Spring Boot简化Spring应用的初始搭建和开发过程。 MyBatis优秀的持久层框架,支持定制化SQL、存储过程...

    Spring Cloud Gateway的全局异常处理

    Spring Cloud Gateway作为一款基于Spring Framework 5、Project Reactor和Spring Boot 2.0构建的云原生网关框架,它提供了强大的路由转发能力和灵活的过滤器模型,能够很好地满足微服务网关的各种需求。然而,在实际...

    基于Spring Boot框架的博客管理系统54a99d007d430a57e42dedccdd2d0172.zip

    基于Spring Boot框架的博客管理系统 内容概要 本项目是一个基于Spring Boot框架的博客管理系统,主要功能包括用户登录、注册、权限管理、JWT认证、文件上传、验证码生成等。系统通过Spring Security进行安全配置,...

    基于Spring Boot和HBase的HBase客户端应用.zip

    # 基于Spring Boot和HBase的HBase客户端...- **异常处理**:全局异常处理机制,确保应用的健壮性和错误信息的统一管理。 - **跨域资源共享(CORS)**:配置CORS策略,支持前后端分离架构中的跨域请求。 ## 项目结构 -

    基于Spring Boot框架的论坛管理系统.zip

    基于Spring Boot框架的论坛管理系统 项目简介 本项目是一个基于Spring Boot框架开发的论坛管理系统(BBS Manager System),旨在提供一个高效、安全的... 全局异常处理统一处理系统中的异常,提供友好的错误提示。

    基于Spring Boot的后台管理系统.zip

    # 基于Spring Boot的后台管理系统 ## 项目简介 ELADMIN 后台管理系统是一个基于 Spring Boot 2.1.0、Spring Boot Jpa、JWT、Spring ...- **异常处理**:前后端统一异常拦截处理,统一输出异常,避免繁琐的判断

    基于Spring Boot的聚合搜索平台.zip

    基于Spring Boot的聚合搜索平台 ... 异常处理全局异常处理器,统一处理业务异常。 技术栈 后端Spring Boot, MyBatis Plus, Elasticsearch, Redis 前端React, Ant Design 数据库MySQL 其他Lombok, Swagge

    基于Spring Boot网络相册设计与实现lw+ppt.rar

    4. 错误处理:自定义全局异常处理器,统一处理未被捕获的异常,提升系统稳定性。 五、PPT展示与文档详解 配合提供的“基于Spring Boot网络相册设计与实现.docx”文档,详细阐述了每个模块的设计思路和实现细节。而...

    基于spring boot的后台管理系统源码.rar

    通过学习这个基于Spring Boot的后台管理系统源码,开发者不仅可以掌握Spring Boot的使用技巧,还能了解到完整的后台系统架构设计,包括数据库设计、权限控制、异常处理等多个层面,对于提升个人技能和项目实战经验...

    基于Spring Boot的EasyDBM数据库建模管理系统.zip

    全局异常处理通过GlobalExceptionHandler统一处理不同类型的异常,返回统一的响应格式,便于前端处理和用户理解。 Web MVC配置使用WebMvcConfig配置消息转换器和跨域请求,支持FastJson处理JSON数据,并允许所有...

Global site tag (gtag.js) - Google Analytics