Javaの例外checked
との違いを理解するのに問題があります。unchecked
- まず、
checked
例外はコンパイル時に異常を探すことになっています。さまざまなソースで提供されている例では、データベース接続、ファイル処理などを挙げていますが、unchecked
例外は、配列の範囲を超えたインデックス作成など、プログラマー側のエラーを探すことになっています。
逆にすべきではありませんか?つまり、データベース接続は実行時に行われますよね?ファイル処理についても同様です。コンパイル時にファイルハンドルを開かないのに、コンパイル時に発生する可能性のあるエラーが検索されるのはなぜですか?一方、その範囲を超える配列のインデックス作成はプログラムですでに行われており、コンパイル時にチェックできます(実行時にユーザーが異常なインデックスを指定した場合は、実行時に問題ありません)。問題)。ここで何が欠けていますか?
RunTimeException
2次に、それ自体がunchecked
サブクラスException
である場合、どのようにできchecked
ますか?これはどういう意味ですか?
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);
}
}