2012-01-21 12 views
3

私は最近null文字列をトリミングしていたので、私は自分のコードで例外にぶつかった。 私は次のように置き換え:このトリムコードが失敗することはありますか?

SomeValue = (SomeString ?? "").Trim(); 

このコードは、これまで失敗することはできますか?

ありがとうございました。

注:try/catchを追加できます。私はちょうどtry/catchを使わずに、このラインを失敗から守るようにしています。

+0

テストするためにいくつかの小さな単位テストを書くことができますか? –

+0

私はあなたの範囲内の答えがノーだと思う、それは失敗することはできません。通常の操作で失敗する唯一の理由は、メモリ不足です。 –

+0

これはもっとグロテスク的な方法で失敗します。それはガベージデータを生成し、あなたはそれを知らないでしょう。 –

答えて

5

これは失敗しません(つまりNullReferenceExceptionを投げる。):

public static string NullTrim(this String str) { 
    if(str == null) { 
     return string.Empty; 
    } 
    return str.Trim(); 
} 

これはエラーなしでコンパイルして実行するには、次のすべてを可能にします。

あなたは多くの方法で同じことを実現できます。

SomeValue = (SomeString == null)?string.Empty:SomeString.Trim(); 
+0

ok、ありがとうございました。これはカスタムjsonデシリアライザの一部ですが、エラーが発生して失敗することはありませんでした。 – frenchie

+0

@frenchie - このようなコードを書くときは、できるだけ_readable_にすることを考えてください。 – Oded

+1

@Oded、私はもう少し正確です: 'これは失敗しません(NullReferenceExceptionをスローする)'このコードは他の方法で失敗する可能性があるためです。 –

2

これは私のやり方ではありませんが、今はこれで失敗してはいけません。

おそらくnullをチェックした後にtrimを呼び出す拡張メソッドを書いています。このような何かを:SomeStringは確かstringであると仮定すると、

"".NullTrim(); 
    " test ".NullTrim(); 
    ((string)null).NullTrim(); 
+0

大丈夫、考えてくれてありがとう。瞬間私は私が持っているラインで行くつもりです。 – frenchie

2

まあそれが原因NullReferenceExceptionで失敗していた場合、今、それは間違いなく、そのせいでのを失敗することはありません。残りについては、私は文脈なしで言うことができません。

関連する問題