Java 中的已选中与未选中的异常
我在理解Java中和异常之间的差异方面遇到了一些问题。checked
unchecked
- 首先,异常应该在编译时查找异常。不同来源提供的示例引用了数据库连接,文件处理作为其中的一些,而异常应该寻找程序员的错误,例如超出数组范围的索引等。
checked
unchecked
难道不应该反过来吗?我的意思是,数据库连接是在运行时完成的,对吧?文件处理也是如此。您不会在编译时打开文件句柄,那么为什么在编译时会查找可能的错误呢?另一方面,在程序中已经完成了超出其范围的数组的索引,可以在编译时检查(如果异常索引是由用户在运行时提供的,那么它可以是运行时问题)。我在这里错过了什么?
2 其次,它本身如何成为子类,哪个是?这是什么意思?RunTimeException
unchecked
Exception
checked
我在赫伯特·希尔德特(Herbert Schildt)的书中找到了一个例子,解释了例外的用法:checked
class ThrowsDemo {
public static char prompt(String str)
throws java.io.IOException {
System.out.print(str + ": ");
return (char) System.in.read();
}
public static void main(String args[]) {
char ch;
try {
ch = prompt("Enter a letter");
}
catch(java.io.IOException exc) {
System.out.println("I/O exception occurred.");
ch = 'X';
}
System.out.println("You pressed " + ch);
}
}
该条款在这里是必要的吗?为什么我不能用这样的语句正常地做到这一点(对不起,我不知道如何模拟一个,所以不能自己检查!throws
try-catch
IO Exception
class ThrowsDemo {
public static char prompt(String str) {
System.out.print(str + ": ");
return (char) System.in.read();
}
public static void main(String args[]) {
char ch;
try {
ch = prompt("Enter a letter");
}
catch(java.io.IOException exc) {
System.out.println("I/O exception occurred.");
ch = 'X';
}
System.out.println("You pressed " + ch);
}
}