エラーの原因
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が一番最後に来ている