亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot異常統一處理方案設計

發布時間:2024-10-05 11:03:04 來源:億速云 閱讀:87 作者:小樊 欄目:編程語言

設計一個Spring Boot異常統一處理方案,可以提高系統的健壯性和可維護性。以下是一個基本的方案設計:

1. 異常類設計

首先,定義一些自定義異常類,以便更好地管理和處理不同類型的異常。

public class CustomException extends RuntimeException {
    private int errorCode;
    private String errorMessage;

    public CustomException(int errorCode, String errorMessage) {
        super(errorMessage);
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;
    }

    // Getters and setters
}

2. 全局異常處理器

使用@ControllerAdvice注解來創建一個全局異常處理器類,該類將處理所有未被特定控制器處理的異常。

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

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(CustomException.class)
    public ResponseEntity<ErrorResponse> handleCustomException(CustomException ex) {
        ErrorResponse errorResponse = new ErrorResponse(ex.getErrorCode(), ex.getErrorMessage());
        return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST);
    }

    @ExceptionHandler(Exception.class)
    public ResponseEntity<ErrorResponse> handleGenericException(Exception ex) {
        ErrorResponse errorResponse = new ErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(), "An unexpected error occurred");
        return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

3. 錯誤響應類

定義一個錯誤響應類,用于封裝錯誤信息,使其易于前端處理。

public class ErrorResponse {
    private int errorCode;
    private String errorMessage;

    public ErrorResponse(int errorCode, String errorMessage) {
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;
    }

    // Getters and setters
}

4. 自定義注解

如果需要更細粒度的異常處理,可以創建自定義注解。

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomExceptionHandler {
    int errorCode() default 0;
    String errorMessage() default "An error occurred";
}

然后在控制器中使用該注解:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @GetMapping("/test")
    @CustomExceptionHandler(errorCode = 1001, errorMessage = "Test error")
    public String test() {
        throw new CustomException(1001, "Test error");
    }
}

5. 異常日志記錄

為了更好地調試和監控系統,可以在全局異常處理器中記錄異常日志。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

@ControllerAdvice
public class GlobalExceptionHandler {

    private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);

    @ExceptionHandler(CustomException.class)
    public ResponseEntity<ErrorResponse> handleCustomException(CustomException ex) {
        logger.error("CustomException: {}", ex.getMessage(), ex);
        ErrorResponse errorResponse = new ErrorResponse(ex.getErrorCode(), ex.getErrorMessage());
        return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST);
    }

    @ExceptionHandler(Exception.class)
    public ResponseEntity<ErrorResponse> handleGenericException(Exception ex) {
        logger.error("GenericException: {}", ex.getMessage(), ex);
        ErrorResponse errorResponse = new ErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(), "An unexpected error occurred");
        return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

總結

通過上述設計,可以實現一個基本的Spring Boot異常統一處理方案。該方案包括自定義異常類、全局異常處理器、錯誤響應類、自定義注解以及異常日志記錄。根據具體需求,可以進一步擴展和優化該方案。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铜川市| 新巴尔虎左旗| 永丰县| 瓮安县| 巴塘县| 汝城县| 吉水县| 和田市| 永新县| 秦安县| 浑源县| 宣恩县| 绥阳县| 米脂县| 临安市| 金溪县| 松滋市| 治多县| 玛纳斯县| 常州市| 南康市| 六盘水市| 千阳县| 翁源县| 长乐市| 溧阳市| 嘉峪关市| 和静县| 博爱县| 高碑店市| 临猗县| 会宁县| 卓资县| 沐川县| 湖州市| 石阡县| 滨海县| 宁强县| 通榆县| 綦江县| 峨边|