在 Spring 中,當發生 AssertionError 時,可以使用自定義的錯誤處理類來簡化代碼邏輯。以下是一個簡單的示例:
ErrorController
接口:import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
@RestController
public class CustomErrorController implements ErrorController {
private static final String ERROR_PATH = "/error";
@RequestMapping(ERROR_PATH)
public ModelAndView handleError(HttpServletRequest request) {
Object status = request.getAttribute("javax.servlet.error.status_code");
if (status != null) {
Integer statusCode = Integer.valueOf(status.toString());
if (statusCode == 404) {
// 在這里添加你的自定義處理邏輯,例如返回一個自定義的錯誤響應
return new ModelAndView("error/404");
}
}
return new ModelAndView("error/default");
}
@Override
public String getErrorPath() {
return ERROR_PATH;
}
}
在 src/main/resources/templates
目錄下創建一個名為 error/404.html
的文件,用于顯示 404 錯誤頁面。你可以根據需要自定義這個文件的內容。
在你的控制器類中,使用 @Assertions
注解來觸發 AssertionError。例如:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@GetMapping("/test")
public String test() {
assert 1 == 2 : "This is an assertion failure";
return "This line will never be executed";
}
}
當發生 AssertionError 時,Spring 會自動將請求轉發到 CustomErrorController
類中,并觸發 handleError
方法。在這個方法中,你可以根據需要添加自定義的錯誤處理邏輯。