問題
カスタム例外「RecordNotFoundException」は、次のブロックコードによって定義されます。
public class RecordNotFoundException extends Exception() {
}
開発者はどのステートメントを使用してカスタム例外をスローできますか。2つ選びなさい。
- throw new RecordNotFoundException(“problem occured”);
- throw new RecordNotFoundException();
- throw RecordNotFoundException(“problem occured”);
- throw RecordNotFoundException();
正解
- throw new RecordNotFoundException(“problem occured”);
- throw new RecordNotFoundException();
- throw RecordNotFoundException(“problem occured”);
- throw RecordNotFoundException();
解説
Apexでは例外をスローするときには、new
キーワードを使用して例外の新しいインスタンスを作成する必要があります。なので、new
キーワードを使用した2つの選択肢が正解となります。
それぞれの選択肢の理由について説明します。
□ throw new RecordNotFoundException(“problem occured”);
これは正解です。この文は新たにRecordNotFoundExceptionの例外を生成して、”problem occured”というメッセージとともにスローします。Apexでは、カスタム例外を生成するために”new”キーワードを使用し、その後に例外クラス名とメッセージを指定します。
□ throw new RecordNotFoundException();
これは正解です。こちらも新たにRecordNotFoundExceptionの例外を生成してスローしますが、エラーメッセージは指定していません。エラーメッセージが不要な場合にこの形式を使用します。
□ throw RecordNotFoundException(“problem occured”);
これは不正解です。Apexでは例外をスローするときに”new”キーワードを使用して新たに例外のインスタンスを生成する必要があります。この文では”new”キーワードが抜けているため正しくない文となります。
□ throw RecordNotFoundException();
これは不正解です。こちらも”new”キーワードが抜けているため、正しくない文となります。
参考:カスタム例外の作成
コメント