「Unreachable statement」エラーについて

エラーの原因

Apex Codeで当該の行への到達可能性がない場合に「Unreachable statement」エラーが発生します。

エラーパターン1

returnよりも後にコードの記述がある

~
return acc.id;
acc.email = 'test@gmail.com'; ←returnより後なので到達しない
update acc; ←returnより後なので到達しない

エラーパターン2

例外のthrowよりも後にコードの記述がある

~
throw new CustomExceptin('Test');
acc.email = 'test@gmail.com'; ←throwより後なので到達しない
update acc; ←throwより後なので到達しない

エラーパターン3

return文よりも後にコードの記述がある(状態に気付かないうちになっている)

~
if(testvar == 'A');{
  acc.email = 'testA@gmail.com';
  update acc;
  return acc.id;
}if(testvar == 'B'){
  acc.email = 'testB@gmail.com';
  update acc;
  return acc.id;
}

↑if(testvar == 'A’)の後に;が紛れ込んでいるため、5行目のreturn文で処理が必ず終わり、6行目以降の処理に入らないようになってしまっています。

解決策

全てのコードがreturnや例外のthrowよりも前に来るように修正し、エラー発生行への到達可能性を確保しましょう。

×

~
return acc.id;
acc.email = 'test@gmail.com'; ←returnより後なので到達しない
update acc; ←returnより後なので到達しない

~
acc.email = 'test@gmail.com';
update acc;
return acc.id; ←returnが一番最後に来ている

Salesforce

Posted by regardie