SpringBoot 入門筆記(六)自定義異常類

只需要將自定義的異常類繼承至RuntimeException即可。

示例代碼:

/**
 * GirlException包含兩個字段: code 和 message (message繼承至RuntimeException)
 */
public class GirlException extends RuntimeException {
    private Integer code;

    public GirlException(Integer code, String message){
        super(message);
        this.code = code;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code){
        this.code = code;
    }
}
// 在Service中使用自定義Exception
@Service
public class GirlService {

    @Autowired
    private GirlRepository girlRepository;

    public void getAge(Integer id) {
        Girl girl = girlRepository.findById(id).get();
        Integer age = girl.getAge();

        if (age <= 10) {
            throw new GirlException(100, "你還在上小學吧");
        }

        if (age < 16) {
            throw new GirlException(101, "你可能在上中學");
        }
    }
}
// 自定義ControllerAdvice
@ControllerAdvice
public class ExceptionHandle {

    /**
     * 捕獲GirlException異常
     * 啟動應用后,被 @ExceptionHandler、@InitBinder、@ModelAttribute 注解的方法,都會作用在被 @RequestMapping 注解的方法上。
     * @param ge
     * @return
     */

    @ExceptionHandler(value = GirlException.class)
    @ResponseBody
    public Result girlHandle(GirlException ge) {
        return ResultUtil.error(ge.getCode(), ge.getMessage());
    }

    /**
     * 捕獲全局異常
     * @param e
     * @return
     */
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public Result handle(Exception e){
        return ResultUtil.error(-1, "未知錯誤");
    }
}
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容