Spring Boot 捕获数据库唯一索引异常
在Spring Boot中,你可以使用@ControllerAdvice
和@ExceptionHandler
注解来全局处理异常。以下是一个示例代码,展示了如何捕获数据库中唯一索引违反异常(例如,在MySQL中通常是DuplicateKeyException
)并进行处理:
import org.springframework.dao.DuplicateKeyException;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(DuplicateKeyException.class)
@ResponseStatus(HttpStatus.CONFLICT)
public String handleDuplicateKeyException(DuplicateKeyException e) {
// 这里可以记录日志,返回自定义的错误信息等
return "A record with the same key already exists";
}
// 可以添加其他需要处理的异常
}
在这个例子中,当DuplicateKeyException
抛出时,handleDuplicateKeyException
方法会被调用,并返回一个HTTP状态码为409(CONFLICT)的响应。你可以在方法中添加更多的逻辑,比如记录日志、包装错误信息等。这样,你就可以在应用中集中处理这类异常,而不是在每个可能抛出此异常的地方去捕获和处理它。
评论已关闭