問題
開発者は次のコードを持っています。
try {
List<String> nameList;
Account a;
String s = a.Name;
nameList.add(s);
} catch (ListException le) {
System.debug('List Exception');
} catch (NullPointerException npe) {
System.debug('NullPointer Exception');
} catch (Exception e) {
System.debug('Generic Exception');
}どのメッセージがログに記録されますか。
- メッセージは記録されない
- Generic Exception
- List Exception
- NullPointer Exception
正解
- メッセージは記録されない
- Generic Exception
- List Exception
- NullPointer Exception
解説
それぞれの選択肢の理由について説明します。
□ メッセージは記録されない
これは不正解です。コードは例外をキャッチするためのcatchブロックを持っているので、例外が発生した場合、関連するメッセージがログに記録されます。
□ Generic Exception
これは不正解です。例外が発生することは確かですが、このケースでは NullPointerException が発生するため、最も具体的な例外に対応する catch ブロックが実行されます。Generic Exception は、特定されないその他の例外に対してログを記録するためのもので、ここでは実行されません。
□ List Exception
これは不正解です。このコードにおいて ListException は発生しません。ListException はリスト操作で発生する特定の問題に関連しており、nameList の初期化がされていないために発生するのは NullPointerException です。
□ NullPointer Exception
これは正解です。Account a; は初期化されておらず、a.Name にアクセスしようとすると a が null を参照しているため NullPointerException が発生します。また、List<String> nameList; も初期化されていないため、nameList.add(s); を呼び出すところでも NullPointerException が発生します。NullPointerException に該当する catch ブロックがこの例外を捕捉し、”NullPointer Exception” メッセージがログに記録されます。
次の問題へ

前の問題へ

1問目から復習する


コメント