user3446781:
OracleのOCPのJava SE 8プログラマーII研究ガイドの第3章では、以下の(pgが184。)と言います:
Java 6のでは、我々は書くことはできませんcatch (Exception e)
し、単に特定の例外をスローします。我々がしようとした場合、コンパイラはまだ文句を言うでしょう:
未処理の例外タイプException
。
これは何を意味するのでしょうか?具体的な例は何ですか?
ジョー・C:
次の例を考えてみます。
Integer add (Integer a, Integer b) {
try {
return a + b;
} catch (Exception e) {
throw e;
}
}
もちろん、2つの数の追加は、任意のチェック例外をスローすることはできません。ただし、Java 6では、コンパイラが見てthrow e
、どこe
でException
、そしてこの方法は、いずれかを投げることができると結論Exception
。これは、ことを宣言するためにアドオンが必要ですthrows Exception
。
Javaの7からは、コンパイラは、例外の種類はどのようなワークアウトで、もう少し賢いですe
、それが再スローされたときにすることができます。この場合には、そのワークアウトすることが可能であるe
だけであってもよいRuntimeException
(オフである)、及び追加のことこうして宣言throws Exception
もはや必要です。