回答編集履歴

1

質問趣旨を勘違いしていたので修正

2018/01/08 06:14

投稿

swordone
swordone

スコア20651

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