91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

丰都县| 沧源| 沐川县| 唐河县| 景德镇市| 罗源县| 桂阳县| 建阳市| 大化| 连山| 章丘市| 乌鲁木齐县| 玉山县| 宝鸡市| 滁州市| 且末县| 玛沁县| 正阳县| 文化| 横峰县| 寿光市| 河北区| 福鼎市| 灌云县| 金溪县| 射阳县| 大余县| 沭阳县| 宁海县| 嘉祥县| 延庆县| 崇礼县| 浪卡子县| 电白县| 固原市| 深圳市| 漳浦县| 区。| 奉节县| 京山县| 会宁县|