记录一下springboot异常处理与自定义异常

全局异常处理

package com.van.mall.common;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author Van
 * @date 2020/3/24 - 10:49
 */
@Slf4j
@ControllerAdvice
public class ExceptionHandler {
    @org.springframework.web.bind.annotation.ExceptionHandler(value = Exception.class)
    @ResponseBody
    public ServerResponse handler(Exception e){
      log.error("system error",e);
        return    ServerResponse.error("zero can divide");
    }
}

解释:

@ControllerAdvice 用来标识它是一个处理全局异常类
@ExceptionHandler 标识它要捕获哪个异常类,这里用的是Exception,说明只要是异常,全部都捕获(因为所有异常都是继承Exception)
@ResponseBody 标识,我要返回的是json而不是视图
其中在方法里面要加上Exception e 参数,因为遇到异常会在这个方法内传入这个参数。

自定义异常

package com.van.mall.common;

import lombok.Data;

/**
 * @author Van
 * @date 2020/3/24 - 10:55
 */
@Data
public class ZeroException extends RuntimeException {
    private String message;
    private int code;

    public ZeroException(String message, int code) {
        super(message);
        this.code = code;
    }
}

解释:

自定义异常就直接继承RuntimeException,它只需要两个成员,message和code,并且要get set,还有一个构造方法(其中构造方法super直接调用父类的构造方法,给message赋值)
使用的时候就直接throw new ZeroException(“0不能当除数”,-1)

发布了56 篇原创文章 · 获赞 1 · 访问量 1509

猜你喜欢

转载自blog.csdn.net/weixin_44841849/article/details/105067070