Java jdk8中写一个全局的异常捕获,mysql执行sql抛出异常后捕获,根据异常关键信息,选择对于的枚举进行返回异常信息,比如抛出“Data truncation:Data too long for column F_fbnr at row”异常则选择"数据过长,无法保存到某列"的功能该怎么写
时间: 2024-02-05 08:11:50 浏览: 130
在Java jdk8中,我们可以通过实现Thread.UncaughtExceptionHandler接口来捕获全局异常。具体实现步骤如下:
1. 创建一个类来实现Thread.UncaughtExceptionHandler接口,重写其uncaughtException方法,该方法会在线程抛出未捕获的异常时被调用。
```java
public class GlobalExceptionHandler implements Thread.UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
// 处理异常
}
}
```
2. 在应用程序的入口处设置全局异常处理器。
```java
Thread.setDefaultUncaughtExceptionHandler(new GlobalExceptionHandler());
```
3. 在uncaughtException方法中处理mysql执行sql抛出的异常,并根据异常信息选择对应的枚举进行返回异常信息。
```java
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
if (throwable instanceof SQLDataException) {
SQLDataException sqlDataException = (SQLDataException) throwable;
String message = sqlDataException.getMessage();
if (message.contains("Data truncation: Data too long for column")) {
// 数据过长,无法保存到某列
// 返回自定义异常信息
}
} else {
// 其他异常处理逻辑
}
}
```
注意,这里需要根据抛出的异常类型来进行判断和处理,如果是其他类型的异常,则需要根据具体情况进行处理。另外,需要根据具体业务场景来定义自己的异常枚举。
阅读全文