日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java自定义异常及统一处理,信息返回

發布時間:2024/3/24 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java自定义异常及统一处理,信息返回 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開始操作

創建enums,exception包:

enums包下:
創建BaseCodeEnum接口
創建Response類:為統一信息返回類
創建ResponseCode枚舉類:在這里定義我們需要的異常

exception包下:
創建HandlerException類:為全局統一異常處理類
創建ServiceException類:為自定義異常類

結構如下:

具體代碼

BaseCodeEnum接口:

public interface BaseCodeEnum {int getCode();String getMessage(); }

ResponseCode枚舉類:

在自定義異常處根據實際情況定義自己或業務需要的異常
在實際使用拋自定義異常時,調用此類中的異常即可

public enum ResponseCode implements BaseCodeEnum {//***********自定義異常開始*********************SUCCESS(200,"操作成功"),STUDENT_ID_IS_NULL(10000,"輸入學生id為空"),STUDENT_ID_NOT_EXIST(10001,"學生id不存在"),STUDENT_ID_EXIST(10002,"學生id已存在");//***********自定義異常結束*********************private int code;private String message;ResponseCode(int code,String message){this.code=code;this.message=message;}@Overridepublic int getCode(){return code;}@Overridepublic String getMessage(){return message;} }

Response類:

自定義異常中異常碼,異常信息,數據信息

import java.io.Serializable;public class Response<T> implements Serializable {private static final int SUCCESS_CODE = 1;private static final int ERROR_CODE = 0;private int code;private String message;private T data;private Response(int code,String message,T data){this.code=code;this.message=message;this.data=data;}private Response(int code,String message){this.code=code;this.message=message;}public static <T> Response<T> success(String msg, T data){return new Response<T>(SUCCESS_CODE,msg,data);}public static <T> Response<T> success(){return new Response<T>(SUCCESS_CODE,"success");}public static <T> Response<T> success(T data){return new Response<T>(SUCCESS_CODE,"success",data);}public static <T> Response<T> error(){return new Response<T>(ERROR_CODE,"error");}public static <T> Response<T> error(String message){return new Response<T>(ERROR_CODE,message);}public static <T> Response<T> error(int code, String message){return new Response<T>(code,message);}public static <T> Response<T> error(int code, String message, T data){return new Response<T>(ERROR_CODE,message,data);}public int getCode(){return code;}public String getMessage(){return message;}public T getData(){return data;} }

HandlerException類:

本類中添加了slf4j日志,可使輸出信息更加完善
若未集成slf4j,刪除log.info……部分即可
想學習為項目添加日志?移步為SpringBoot項目添加日志:slf4j

@RestControllerAdvice @Slf4j public class HandlerException {@ExceptionHandlerpublic Response<String> handleServiceException(ServiceException e) {log.info("**************ServiceException**************");log.info("【業務異常】:{}",e.getMessage(),e);return Response.error(e.getCode(),e.getMessage());}@ExceptionHandlerpublic Response<String> handleRuntimeException(RuntimeException e){log.info("**************RuntimeException**************");log.info("【運行異常】:{}",e.getMessage(),e);return Response.error("運行異常");}@ExceptionHandlerpublic Response<String> handleException(Exception e){log.info("【系統異常】:{}",e.getMessage(),e);return Response.error("系統異常");} }

ServiceException類:

類中使用@Data注解,可省略set,get方法
使用方法:依賴中添加lombok依賴并下載lombok插件(file–>settings–>Plugins–>Lombok–>install)

import com.example.demo.enums.BaseCodeEnum; import lombok.Data;@Data public class ServiceException extends RuntimeException {private int code;private String message;public ServiceException(String message){super(message);this.message=message;}public ServiceException(int code,String message){super(message);this.code=code;this.message=message;}public ServiceException(BaseCodeEnum baseCodeEnum){this(baseCodeEnum.getCode(),baseCodeEnum.getMessage());} }

自定義異常及異常攔截統一處理完成

測試

測試項目為之前創建文章中springboot整合mybatis實現對學生表信息增刪改查項目,項目創建過程請移步SpringBoot整合MyBatis實現增刪改查(簡單,詳細)

StudentController插入信息中判斷學生學號是否為空,空則拋出在枚舉類中自定義的自定義異常,不為空則成功

使用postman測試:

第一次測試學號為空的情況:


拋出異常成功

第二次測試學號不為空的情況


信息插入成功
測試結束

總結

以上是生活随笔為你收集整理的Java自定义异常及统一处理,信息返回的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。