0

可能性のある InvalidOperationException を試して処理する最善の方法について混乱しています。

私のコードでは、下に青い線が表示される(decimal)data.CurrencyExchangeRateので、コードを次のように変更します。

data.CurrencyExchangeRate.GetValueOrDefault()青い線を削除します。

データはデータベースからのもので、列は 10 進数であるため、null になることはありません。

GetValueOrDefault考えられるエラーに対処する最善の方法はありますか?

私はそれをどのように処理するのが最善かわかりません。

ありがとう

4

2 に答える 2

1

CurrencyExchangeRateが null 許容の 10 進数であると仮定すると、値が null のときにデフォルトのゼロを使用する場合GetValueOrDefaultは、拡張メソッドが最も安全な方法です。

1 などの他のデフォルト値については、次のように使用します。

decimal val = data.CurrencyExchangeRate.HasValue 
    ? data.CurrencyExchangeRate.Value
    : 1M;

キャッチする唯一の例外はGetValueOrDefault、OutOfMemoryExceptions などのシステムからのものです。したがって、ここでエラーが発生する可能性はほとんどありません。

于 2013-06-27T10:08:48.087 に答える
1

を引き続き使用する必要がありますtry/catch。データベースからのデータが常に有効であると想定しないでください。たとえば、データベースのデータ型を a に変更して値VARCHARを追加するとnull、アプリケーションがクラッシュします。したがって、例外を処理することは理にかなっています。

try {
    var value = data.CurrencyExchangeRate.GetValueOrDefault();
} catch (InvalidOperationException e) {
   // Log the exception
}
于 2013-06-27T09:59:36.637 に答える