【Salesforce 認定Platformデベロッパー】試験対策:第75問

問題

開発者は次のコードを持っています。

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 にアクセスしようとすると anull を参照しているため NullPointerException が発生します。また、List<String> nameList; も初期化されていないため、nameList.add(s); を呼び出すところでも NullPointerException が発生します。NullPointerException に該当する catch ブロックがこの例外を捕捉し、”NullPointer Exception” メッセージがログに記録されます。

次の問題へ

前の問題へ

1問目から復習する

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

雇われのシステムエンジニアです。
普段は車載ECUのセキュリティー分野に従事しております。

コメント

コメントする

目次