回答編集履歴
1
質問趣旨を勘違いしていたので修正
answer
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
-
ArrayIndexOutOfBoundsExceptionは**非検査例外**で、キャッチが義務付けられていないためです。
|
2
|
-
IOExceptionは**検査例外**なので、どこかでキャッチするかメソッドでスロー宣言しないとコンパイルエラーになります。
|
1
|
+
IOExceptionは**検査例外**なので、どこかでキャッチするかメソッドでスロー宣言しないとコンパイルエラーになります。
|
2
|
+
裏を返せば、検査例外はどこかでスローするかスロー宣言しているメソッドを使うかしない限り、絶対にその例外が発生しません。なのにその例外のキャッチを用意しても、絶対に使われない**デッドコード**になるのです。
|
3
|
+
一方、ArrayIndexOutOfBoundsExceptionは**非検査例外**で、キャッチやスロー宣言が義務付けられていません。つまり、**どこからでも発生する可能性があります。**だから、それをキャッチするコードを書いても、絶対に到達しないとは言い切れないのです。
|