Java jdk8中写一个接口的全局的异常捕获,mysql执行sql抛出异常后捕获并根据异常的关键信息,选择对应的枚举抛出异常信息,比如执行sql抛出“Data truncation:Data too long for column”异常则选择"数据过长,无法保存到某列"的枚举进行抛出。这样的功能该怎么写
时间: 2024-02-05 17:12:34 浏览: 78
可以使用Java的异常处理机制和枚举类型来实现这个功能。
首先,创建一个自定义的枚举类型,用于存储不同的异常信息:
```java
public enum ErrorEnum {
DATA_TOO_LONG("数据过长,无法保存到某列"),
// 其他异常信息枚举
// ...
private String message;
ErrorEnum(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
```
然后,在接口的全局异常处理中捕获MySQL执行SQL抛出的异常,并根据异常信息选择对应的枚举类型抛出异常信息:
```java
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(SQLException.class)
@ResponseBody
public ResponseEntity<String> handleSQLException(SQLException ex) {
String message = ex.getMessage();
if (message.contains("Data too long for column")) {
return ResponseEntity.badRequest().body(ErrorEnum.DATA_TOO_LONG.getMessage());
}
// 其他异常信息处理
// ...
}
}
```
这样,当MySQL执行SQL抛出"Data truncation:Data too long for column"异常时,会返回"数据过长,无法保存到某列"的异常信息枚举。如果有其他异常信息,也可以在枚举类型中定义对应的信息,并在全局异常处理中进行处理。
阅读全文