修改代码,让try-catch代码可以处理switch各个异常,而不是共同的大异常Exception
时间: 2024-03-01 17:52:59 浏览: 15
您可以尝试以下修改:
```java
@Test
public void test02() {
try {
ExecuteFunction function = () -> {
int i = 0;
switch (i) {
case 0: {
throw new IOException("error");
}
case 1: {
throw new TException("error2");
}
default: {
throw new SocketTimeoutException("error3");
}
}
};
function.run();
} catch (IOException e) {
// 处理IOException异常
} catch (TException e) {
// 处理TException异常
} catch (SocketTimeoutException e) {
// 处理SocketTimeoutException异常
} catch (Exception e) {
// 处理其他异常
}
}
@FunctionalInterface
public interface ExecuteFunction<T, E extends Exception> {
T run() throws E;
}
```
在这个修改后的代码中,我们将try-catch块移到了函数调用的外部,并将不同的异常类型分别进行了catch处理。这样,每个异常都会被单独处理,避免了将它们捆绑在一起处理的问题。