teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

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

2018/01/08 06:14

投稿

swordone
swordone

スコア20675

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