問題
次のApexステートメントがあります。
Account myAccount = [SELECT Id, Name FROM Account];
SOQLクエリによって複数のAccountが返された場合、何が発生しますか。
- 変数myAccountは自動的にListデータ型にキャストされます。
- 最初に返された Account が myAccount に代入されます。
- クエリは失敗し、エラーがデバッグログに書き込まれます。
- 未処理の例外がスローされ、コードが終了します。
正解
- 変数myAccountは自動的にListデータ型にキャストされます。
- 最初に返された Account が myAccount に代入されます。
- クエリは失敗し、エラーがデバッグログに書き込まれます。
- 未処理の例外がスローされ、コードが終了します。
解説
それぞれの選択肢の理由について説明します。
□ 変数myAccountは自動的にListデータ型にキャストされます。
これは不正解です。Apexでは自動的に変数のデータ型を変更することはできません。
□ 最初に返された Account が myAccount に代入されます。
これは不正解です。単一のsObject変数に複数のレコードを代入することはできません。
□ クエリは失敗し、エラーがデバッグログに書き込まれます。
これは不正解です。Apexでは、SOQLクエリが複数のレコードを返す場合、単一のsObject変数に代入しようとすると「List has more than 1 row for assignment to SObject」という未処理の例外がスローされます。この例外はコードの実行を中断させると同時に、デバッグログに例外情報として記録されます。
□ 未処理の例外がスローされ、コードが終了します。
これは正解です。SOQLクエリが複数のレコードを返す場合、単一のsObject変数に代入しようとすると、「List has more than 1 row for assignment to SObject」という未処理の例外がスローされ、コードの実行が中断されます。
次の問題へ
【Salesforce 認定Platformデベロッパー】試験対策:第137問
問題 開発者は、Apexテストメソッドがサンドボックスで失敗することに気づきました。問題を特定するために、開発者はテストメソッド内のコードをコピーし、開発者コンソ…
前の問題へ
【Salesforce 認定Platformデベロッパー】試験対策:第135問
問題 開発者はループ処理で、リスト内の各取引先責任者をチェックします。”Boss”というタイトルの取引先責任者が見つかった場合、Apexのメソッドはforループの外側のコ…
1問目から復習する
【Salesforce 認定Platformデベロッパー】試験対策:第1問
問題 デバッグログに書き込まれるときのxの値は何ですか。 Integer x = 0; do { x = 1; x++; } while (x < 1); System.debug(x); 0 1 2 3 正解 0 1 2 3 解説 デバッ…
コメント