为什么在已经声明的情况下获得处理或声明错误?

Ama*_*man 2 java exception-handling compiler-errors exception

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

已经处理了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
    }
}
Run Code Online (Sandbox Code Playgroud)

Sea*_*oyd 6

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

如果将catch()子句更改为匹配IOException,则将进行编译.

我建议你读例外径的的java语言教程.

  • 可能值得指出的是,整个"尝试......捕获"是多余的......(+ 1) (2认同)