Java 中根据执行的sql报错,写一个全局异常,判断是否符合某个报错内容,就抛出指定枚举的异常信息
时间: 2023-12-01 19:03:37 浏览: 122
可以使用 Java 中的异常处理机制来实现这个功能,具体的步骤如下:
1. 定义一个自定义异常类,例如叫做 `MySqlException`,该类继承自 `RuntimeException`。
2. 在 `MySqlException` 类中定义一个枚举类型,用于存放各种可能的异常信息,例如:
```java
public class MySqlException extends RuntimeException {
public enum ErrorCode {
DUPLICATE_ENTRY,
FOREIGN_KEY_CONSTRAINT,
UNKNOWN_ERROR
}
private ErrorCode errorCode;
public MySqlException(ErrorCode errorCode) {
this.errorCode = errorCode;
}
public ErrorCode getErrorCode() {
return errorCode;
}
}
```
3. 在程序中捕获数据库操作的异常,判断其报错信息是否符合某个特定的字符串,如果符合则抛出 `MySqlException` 异常,例如:
```java
try {
// 执行数据库操作
} catch (SQLException e) {
String message = e.getMessage();
if (message.contains("Duplicate entry")) {
throw new MySqlException(MySqlException.ErrorCode.DUPLICATE_ENTRY);
} else if (message.contains("foreign key constraint")) {
throw new MySqlException(MySqlException.ErrorCode.FOREIGN_KEY_CONSTRAINT);
} else {
throw new MySqlException(MySqlException.ErrorCode.UNKNOWN_ERROR);
}
}
```
4. 在程序中捕获 `MySqlException` 异常,并根据其 `ErrorCode` 属性来处理异常,例如:
```java
try {
// 执行数据库操作
} catch (MySqlException e) {
MySqlException.ErrorCode errorCode = e.getErrorCode();
if (errorCode == MySqlException.ErrorCode.DUPLICATE_ENTRY) {
// 处理重复插入的情况
} else if (errorCode == MySqlException.ErrorCode.FOREIGN_KEY_CONSTRAINT) {
// 处理外键约束的情况
} else {
// 处理其他未知错误的情况
}
}
```
通过这种方式,我们可以根据数据库操作的异常信息来判断出具体的异常类型,并抛出自定义的异常对象,以便程序能够更加准确地处理异常情况。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![text/x-c](https://img-home.csdnimg.cn/images/20250102104920.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)