tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:String型判定処理のNULL対策について

String型の比較を行うときに便利な関数かいろいろと用意されています。

String Methods
http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#StartTopic=Content/apex_methods_system_string.htm?SearchType=Stem

すごく便利な関数がたくさんあるのですが、変数の値がNULL値の場合にExceptionエラーが発生してしまうことがあります。"equals"の処理で検証してみました。

正常系

この処理では値が一致しているので次のようなログが出力されます。
f:id:tyoshikawa1106:20130807202955p:plain

異常系

対象がNULL値の場合は次のようにExceptionエラーが発生します。
f:id:tyoshikawa1106:20130807203302p:plain

おまけ

'==' で比較した場合は、NULLでもExceptionエラーは発生しません。
f:id:tyoshikawa1106:20130807203718p:plain

回避方法

equals関数を使わずに判定すればそれで問題ないのですが、せっかく用意されているのでequals関数でExceptionエラーを発生させないようにする方法を確認してみました。

こんな感じです。

String.isNotEmpty(s)による判定を先につけることでExceptionエラーが発生しなくなりました。
f:id:tyoshikawa1106:20130807205926p:plain

ちなみにString.isNotEmpty(s)が先にない場合はエラーが発生してしまうみたいです。
おそらくindexOf等の関数も同様の方法で対応可能だと思います。