![Java SE17 Silver 模擬試験](https://knowledgeblog-k.com/wp-content/uploads/2024/05/ad1254753efe45d88c9bd7f458025953.png)
問題
次のコード断片では throws MyException を省略するとコンパイルエラーになる原因とその説明として正しいものはどれですか。(2つ選択)
public void method() throws MyException {
//処理コード
}
選択肢
A)method( ) ではjava.lang.Exceptionをスローできる
B)MyException はチェック例外である
C)MyException は非チェック例外である
D)method( ) ではMyException のサブクラスをスローできる
E)method( ) ではMyException のみをスローできる
F)MyException はエラーである
解答
A)method( ) ではjava.lang.Exceptionをスローできる
B)MyException はチェック例外である
C)MyException は非チェック例外である
D)method( ) ではMyException のサブクラスをスローできる
E)method( ) ではMyException のみをスローできる
F)MyException はエラーである
解説
次のコード断片で throws MyException
を省略するとコンパイルエラーになる原因として正しい選択肢は以下の通りです。
B)MyException はチェック例外である
- 説明: チェック例外は、メソッドがスローする可能性がある場合、必ずそのメソッドのシグネチャで
throws
宣言をしなければなりません。もしMyException
がチェック例外であれば、throws MyException
を省略するとコンパイルエラーが発生します。
D)method( ) ではMyException のサブクラスをスローできる
- 説明: メソッドが
throws MyException
を宣言している場合、そのメソッド内でMyException
のサブクラスもスローすることができます。省略すると、MyException
およびそのサブクラスをスローすることができなくなるため、コンパイルエラーが発生します。
A)method( ) ではjava.lang.Exceptionをスローできる
- 理由:
java.lang.Exception
はスローできるかもしれませんが、特定の例外がスローされるときは、明示的にその例外を宣言する必要があります。この選択肢は、このコードの文脈では正確ではありません。
C)MyException は非チェック例外である
- 理由: チェック例外が
throws
宣言を必要とするため、MyException
が非チェック例外である場合、throws MyException
を省略してもエラーにはなりません。したがって、正しくない選択肢です。
E)method( ) ではMyException のみをスローできる
- 理由:
throws
を省略した場合、MyException
およびそのサブクラスだけでなく、他のチェック例外や非チェック例外もスローできるため、この選択肢は誤りです。
F)MyException はエラーである
- 理由:
MyException
がエラーであれば、チェック例外の概念には該当しません。チェック例外であれば、エラーの代わりに例外として扱われます。このため、正しくない選択肢です。
まとめ
選択肢 A、C、E、F は、throws MyException
を省略することによるコンパイルエラーの原因として正しくないため、誤りです。
対象資格:Java SE17 認定資格