我经历了这次采访
http://www.artima.com/intv/handcuffs.html
以及一些关于检查异常的文章和讨论。这checked exception就是引入 java 的未经尝试的实验。它会带来版本性和可扩展性问题。布鲁斯·埃克尔还提供了一个适配器转换checked exception,以unchecked exception避免所谓的力量抓例外。我也从心脏冬眠的举动checked exception来unchecked exception。我想知道如果我们删除checked exception机制会怎样?我也同意checked exception没有必要存在。
实际上不会发生很多事情。在 VM 级别,未检查所有异常。您可以通过执行以下操作来验证这一点:
public class A {
public static void a() {
/* Do nothing */
}
}
public class B {
public static void main(String[] args) {
A.a();
}
}
Run Code Online (Sandbox Code Playgroud)
在各自的文件存储这些类A.java和B.java并编译它们。然后,更改A为以下内容:
public class A {
public static void a() throws Exception {
throw(new Exception("foo"));
}
}
Run Code Online (Sandbox Code Playgroud)
A.java重新编译而不重新编译B.java。然后运行B,您将看到从A传播和终止程序中抛出的异常,就好像它是一个RuntimeException,而虚拟机不会抱怨链接错误或任何事情。
受检异常仅仅是 Java 语言的语法级特性。删除它不会影响 VM 实现,甚至不会影响语言模型。
| 归档时间: |
|
| 查看次数: |
1540 次 |
| 最近记录: |