开发者社区> 慕枫技术笔记> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

SpringBoot代码整洁之道系列之一:全局异常处理

简介: 整洁代码不仅包括实际项目中的业务代码,也包括一些系统级别的。全局异常处理属于系统级的整洁代码。如果我们把我们的项目比做成一座城市,那么类似全局异常处理、拦截器等等就相当于这座城市的排水系统、电缆布置等等。这些设施布置的好坏直接影响整个城市的运转情况。那么在项目层级来说,系统级的整洁代码就是为了使得项目可以更加高效的运转。
+关注继续查看

引言

网上看到这样一句话觉得很有意思分享给大家,这句话是:你写过的代码,藏着你读过的书、看过的风景、走过的路、听过的音乐以及爱过的人。虽然是句玩笑话,但是这也体现了大家对于编写优雅整洁代码的自我诉求以及鞭策。

从本篇开始,我将写一些关于使用SpringBoot开发项目时,如何进行代码整洁实践的系列文章。糟糕的代码不仅BUG百出,也不利于进行团队开发以及扩展。因此,编写优雅整洁的代码不仅能提供团队的开发效率也同时利于未来的扩展。Less coding, more thinking Think more, code less

  • 全局异常处理
  • 总结

一、 全局异常处理

1、使用@RestControllerAdvice注解来处理异常

(1)定义异常类

public class ProgramException extends RuntimeException{

    //错误码
    private String code;

    //错误信息
    private String msg;

    public ProgramException(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

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

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

(2)定义全局响应对象

public class ReponseData {

    //错误码
    private String code;

    //错误信息
    private String msg;

    //响应数据
    private Object data;

    public ReponseData(String code, String msg, Object data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }
    
    public ReponseData(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

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

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

(3)定义全局异常处理器

@RestControllerAdvice
public class BusinessServiceExceptionHandler {
private Logger logger = LoggerFactory.getLogger(BusinessServiceExceptionHandler.class);
    
    @ExceptionHandler(ProgramException.class)
    @ResponseStatus(ProgramException.class)
    public ResponseData handleException(ProgramException e, HttpServletRequest req){
    return new ResponseData(e.getCode(), e.getMsg());
    }
}

比较推荐使用这种方法,简单明了,特别是现在前后端分离,后端提供统一的Restful接口给前端,如果出现异常,可以由异常处理器来统一进行错误信息的返回。

2、使用SimpleMappingExceptionResolver处理全局异常

@Configuration
public class GlobalExceptionResolver extends SimpleMappingExceptionResolver{
    
private static Logger log = LoggerFactory.getLogger(GlobalExceptionResolver.class);
    
    public GlobalExceptionResolver() {
        setOrder(0);
    }

    

二、 总结

整洁代码不仅包括实际项目中的业务代码,也包括一些系统级别的。全局异常处理属于系统级的整洁代码。如果我们把我们的项目比做成一座城市,那么类似全局异常处理、拦截器等等就相当于这座城市的排水系统、电缆布置等等。这些设施布置的好坏直接影响整个城市的运转情况。那么在项目层级来说,系统级的整洁代码就是为了使得项目可以更加高效的运转。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
技术分享 | Spring Boot 异常处理
技术分享 | Spring Boot 异常处理
25 0
SpringBoot - 全局异常
SpringBoot - 全局异常
31 0
SpringBoot系列教程web篇之全局异常处理
当我们的后端应用出现异常时,通常会将异常状况包装之后再返回给调用方或者前端,在实际的项目中,不可能对每一个地方都做好异常处理,再优雅的代码也可能抛出异常,那么在 Spring 项目中,可以怎样优雅的处理这些异常呢?
48 0
技术分享 | Spring Boot 异常处理
技术分享 | Spring Boot 异常处理
102 0
技术分享 | Spring Boot 异常处理
- Java 异常类 首先让我们简单了解或重新学习下 Java 的异常机制。 Java 内部的异常类 Throwable 包括了 Exception 和 Error 两大类,所有的异常类都是 Object 对象。 Error 是不可捕捉的异常,通俗的说就是由于 Java 内部 JVM 引起的不可预见的异常, Java 虚拟机会选择终止线程。如 OutOfMemoryError ,就是 Jav
55 0
SpringBoot高级【异常处理的五种方式】
SpringBoot中提供了五种对于异常的处理方式,本文我们来一一介绍下。 异常处理
48 0
第九篇:SpringBoot 2.x全局异常处理
关于对异常的处理也是我们在开发过程一个比较大的问题,今天我们就来看看SpringBoot中如何处理异常。 TempException.java package com.
2265 0
Spring(十九)之异常处理
异常处理,对于项目开发至关重要,总不能用户点击一个页面出错了,直接报500,那样用户体验多不好啊! 所以这里讲的是SpringMVC对异常的处理,希望能给大家带来一定的 帮助和启发。   一、编写实体 package com.
952 0
SpringBoot中配置全局异常处理
在项目开发中,肯定少不了异常的出现,作为后台开发人员,我们总是在不停的写各种接口提供给前端调用,然而不可避免的,当后台出现BUG时,前端总是丑陋的讲错误信息直接暴露给用户,这样的用户体验想必是相当差的 先写一个错误请求 @GetMapping("api...
1000 0
+关注
慕枫技术笔记
InfoQ签约作者、CSDN博客专家、专注于架构设计、微服务以及云原生技术分享
129
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载