我已经通过了这次面试
http://www.artima.com/intv/handcuffs.html
以及一些关于检查异常的文章和讨论。那就是说 checked exception
是引入 java 的未经尝试的实验。它会带来版本性和可扩展性问题。 Bruce eckel 还提供了一个适配器将checked exception
转换为unchecked exception
以避免调用force to catch exception。我还希望 hibernate 从 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();
}
}
将这些类分别存放在A.java
和B.java
文件中,并进行编译。然后,将 A
更改为以下内容:
public class A {
public static void a() throws Exception {
throw(new Exception("foo"));
}
}
重新编译A.java
而不重新编译B.java
。然后运行 B
,您将看到从 A
抛出的异常传播并终止程序,就好像它是一个 RuntimeException
,没有 VM提示链接错误或任何事情。
已检查的异常仅仅是 Java 语言的一个语法级特性。删除它不会影响 VM 实现,甚至不会影响语言模型。
关于java - 如果我们从 java 中删除已检查的异常会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14107278/