SpringBoot学习(11)— 自定义异常处理

一,介绍

在实际业务中,springboot的异常处理可能无法满足我们的业务需求,那么就需要我们自定义异常来处理。
可以用来跳转到统一错误提示页面或者返回错误信息。

二,实现过程和示例代码

  • 定义一个自定义异常类
package com.eceibs.report.exception;

/**
 * 自定义异常
 */
public class RRException extends RuntimeException {
    private static final long serialVersionUID = 1L;

    private String msg;
    private int code = 500;

    public RRException(String msg) {
        super(msg);
        this.msg = msg;
    }

    public RRException(String msg, Throwable e) {
        super(msg, e);
        this.msg = msg;
    }

    public RRException(String msg, int code) {
        super(msg);
        this.msg = msg;
        this.code = code;
    }

    public RRException(String msg, int code, Throwable e) {
        super(msg, e);
        this.msg = msg;
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

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

    public int getCode() {
        return code;
    }

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

}
  • 需要的地方进行抛出
if(size>1000){
            throw new RRException("参数异常!",10111);
        }
  • 定义一个全局异常捕捉类
    @ExceptionHandler 标注需要处理捕捉的异常类型
    @ResponseBody 异常处理返回
package com.eceibs.report.exception;

import com.alibaba.fastjson.JSONException;
import com.eceibs.report.constant.ErrorConstants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.util.HashMap;
import java.util.Map;

/**
 * ClassName: UnionExceptionHandler
 */
@Slf4j
@RestControllerAdvice
public class UnionExceptionHandler {

    /**
     * 应用到所有@RequestMapping注解方法,在其执行之前初始化数据绑定器
     * log如果为红色的话需要IDE安装lombok插件
     * Description : 全局异常捕捉处理
     * Group :
     * @param
     * @return
     */
    @ResponseBody
    @ExceptionHandler(RRException.class)
    public Map apiExceptionHandler(RRException ex) {
        log.error("ApiException 异常抛出:{我是异常我错了...}", ex);
        Map map = new HashMap();
        map.put("code", ex.getCode());
        map.put("msg", ex.getMessage());
        return map;
    }

    @ResponseBody
    @ExceptionHandler(JSONException.class)
    public Map JSONExceptionHandler() {
        Map map = new HashMap();
        map.put("code", ErrorConstants.JSON);
        map.put("msg", ErrorConstants.JSON_DESC);
        return map;
    }

    @ResponseBody
    @ExceptionHandler(NullPointerException.class)
    public Map NullPointerExceptionHandler() {
        Map map = new HashMap();
        map.put("code", ErrorConstants.PARAMS_NULL);
        map.put("msg", ErrorConstants.PARAMS_NULL_DESC);
        return map;
    }

    @ResponseBody
    @ExceptionHandler(NumberFormatException.class)
    public Map NumberFormatExceptionHandler() {
        Map map = new HashMap();
        map.put("code", ErrorConstants.PARAMS);
        map.put("msg", ErrorConstants.PARAMS_DESC);
        return map;
    }

}

这样就可以实现自定义异常的产生和捕捉

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容