这是代码示例,我收到错误“必须被捕获或声明到 被抛出”但我有
已经处理了 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 Trail的 Java Language Tutorial .
关于java - 为什么在已经声明时处理或声明错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32710256/