質問内容
javaシルバーの勉強をしているのですが、回答の解説を読んでも疑問が消えないので、質問させてください。
以下の問題の回答は、AとDです。
Aはわかるのですが、なぜDも正解なのでしょうか?
問題のhelloメソッドはif文で検査例外もthrowされる可能性があるなら、メソッド宣言時にthrows句でどのような例外がスローされるかを宣言する必要があるのではないのでしょうか?
問題
次のSampleクラスの2行目の空欄に入るコードとして、正しいものを選びなさい。(2つ選択)
java
1public class SampleExcpection extends Exception {}
java
1public class TestExcpection extends RuntimeException {}
java
1public class Sample { 2 public void hello(String name) 【ここに入るコードを選ぶ問題】{ 3 if (name == null ) { 4 throw new SampleException(); 5 } 6 if ( "" .equals(name) ) { 7 throw new TestException(); 8 } 9 // do someting 10 } 11}
回答の選択肢
A. throws SampleException, TestException
B. throws SampleException; TestException
C. throws TestException
D. throws SampleException
E. 何も記述しなくて良い
回答
A,D
回答の解説
「Exceptionクラスを継承している例外クラスは、try-catchしているか、もしくはthrows句で宣言しているかのどちらかを強制されます。」とあり、また
「非検査例外はthrows句で宣言してもしなくても、どちらでも問題ありません」とあります。
回答3件
あなたの回答
tips
プレビュー