dog*_*ane 22 java final exception java-7
在以前的java版本中,重新抛出异常被视为抛出catch参数的类型.
例如:
public static void test() throws Exception{
DateFormat df = new SimpleDateFormat("yyyyMMdd");
try {
df.parse("x20110731");
new FileReader("file.txt").read();
} catch (Exception e) {
System.out.println("Caught exception: " + e.getMessage());
throw e;
}
}
Run Code Online (Sandbox Code Playgroud)
在Java 7中,如果声明异常,则可以更精确地了解抛出的异常final:
//(doesn't compile in Java<7)
public static void test2() throws ParseException, IOException{
DateFormat df = new SimpleDateFormat("yyyyMMdd");
try {
df.parse("x20110731");
new FileReader("file.txt").read();
} catch (final Exception e) {
System.out.println("Caught exception: " + e.getMessage());
throw e;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题:文档说我需要声明异常final.但如果我不这样做,上面的代码仍然编译和工作.我错过了什么吗?
参考文献:
Jon*_*eet 24
我相信我看到Josh Bloch发来的一条推文说,"最后"的限制已被提升.我会看看我是否能找到一篇关于它的帖子,但我怀疑你所阅读的任何"早期"文档现在都是不准确的.
编辑:我找不到确切的"它已更改"帖子,但Java 7文档状态显示了一个例子,它不是最终的.当catch块声明多个类型时,它会讨论异常变量是隐式最终的,但这稍微是分开的.
编辑:现在我已经找到了我的问题的根源,但它是一个内部的邮件列表后:(无论如何,它并没有被声明为final的,但我相信,编译器将其视为隐含最后的-就像在多捕捉场景.
| 归档时间: |
|
| 查看次数: |
6232 次 |
| 最近记录: |