java - 为什么在已经声明时处理或声明错误?

标签 java exception compiler-errors

这是代码示例,我收到错误“必须被捕获或声明到 被抛出”但我有

已经处理了 IOException。那么你能告诉我为什么会出现错误吗?代码也是

遵循句柄和声明规则。

public void rethrow() throws SQLException, IOException {
    try {
        couldThrowAnException();
    }
    catch(Exception e) {
        e = new IOException();
        throw e;            //Error: must be caught or declare to be thrown
    }
}

最佳答案

您遇到的问题是编译器处理变量声明类型,而不是您分配给变量的类型。 变量是 Exception 类型,它不是 throws 子句的一部分。

如果您更改 catch() 子句以匹配 IOException,它将编译。

我建议您阅读 the Exceptions TrailJava Language Tutorial .

关于java - 为什么在已经声明时处理或声明错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32710256/

相关文章:

java synchronizedMap 对 map 对象的操作应该是同步的

java - 为什么在 Mockito 测试期间源代码另有说明时 protected 最终字段为空?

java - 考试成绩和Java成绩

java - JPA 和泛型

java - 将库添加到 Android Studio 项目

haskell - `onException` 的行为方式

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

c++ - 我想捕获一个异常并将其捆绑在我自己的异常中并向上抛出

r - 无法使用Boost 1.56.0构建RStudio IDE

xcode - 重构 ViewControllers - 错误 : Storyboard both contain a view controller with same identifier