自定义Java异常处理方法

本文介绍了如何在Spring Boot项目中使用自定义ErrorResult类来处理可预知的API错误,并通过@ControllerAdvice实现全局异常捕获,展示了常见的错误处理场景和定制返回结果的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实体类:

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 可预知的异常
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ErrorResult {

    private String errCode = "999999";
    private String errMessage;

    public static ErrorResult error() {
        return ErrorResult.builder().errCode("999999").errMessage("系统异常稍后再试").build();
    }

    public static ErrorResult fail() {
        return ErrorResult.builder().errCode("000001").errMessage("发送验证码失败").build();
    }

    public static ErrorResult loginError() {
        return ErrorResult.builder().errCode("000002").errMessage("验证码失效").build();
    }

    public static ErrorResult faceError() {
        return ErrorResult.builder().errCode("000003").errMessage("图片非人像,请重新上传!").build();
    }

    public static ErrorResult mobileError() {
        return ErrorResult.builder().errCode("000004").errMessage("手机号码已注册").build();
    }

    public static ErrorResult contentError() {
        return ErrorResult.builder().errCode("000005").errMessage("动态内容为空").build();
    }

    public static ErrorResult likeError() {
        return ErrorResult.builder().errCode("000006").errMessage("用户已点赞").build();
    }

    public static ErrorResult disLikeError() {
        return ErrorResult.builder().errCode("000007").errMessage("用户未点赞").build();
    }

    public static ErrorResult loveError() {
        return ErrorResult.builder().errCode("000008").errMessage("用户已喜欢").build();
    }

    public static ErrorResult disloveError() {
        return ErrorResult.builder().errCode("000009").errMessage("用户未喜欢").build();
    }

    public static ErrorResult HandExetions() {
        return ErrorResult.builder().errCode("0000010").errMessage("我是自定义的").build();
    }
}

继承类:

import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;

//自己定义的异常
@Data
public class MyError extends Exception {

    @Autowired
    private ErrorResult result;

    //参数是你想传入的错误类型  赋值给本地的result
    public MyError(ErrorResult result) {

        this.result = result;
    }

}
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

/**
 * 不可预知的异常
 */
@ControllerAdvice 
public class ExceptionAdive {


    @ExceptionHandler(value = MyError.class)
    private ResponseEntity HandException(MyError e){
        e.printStackTrace();
        return ResponseEntity.status(500).body(e.getResult());
    }



    @ExceptionHandler(value = Exception.class)
    private ResponseEntity exception(Exception e){
        e.printStackTrace();
        return ResponseEntity.status(500).body(ErrorResult.HandExetions());
    }
    
}

使用方法:

throw new MyError(ErrorResult.fail());

返回结果:

{
    "errCode": "000001",
    "errMessage": "发送验证码失败"
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值