可能的invalidoperationexception正确的处理方式

本文关键字:处理 方式 invalidoperationexception | 更新日期: 2023-09-27 18:20:02

我对尝试处理可能的InvalidOperationException的最佳方法感到困惑。

在我的代码中,我在(decimal)data.CurrencyExchangeRate下得到一条蓝线,因此将代码更改为:

data.CurrencyExchangeRate.GetValueOrDefault()去除蓝线。

由于数据来自数据库,并且列是十进制,因此它永远不会为null。

那么GetValueOrDefault是处理可能的错误的最佳方法吗?

我只是不确定如何最好地处理它。

感谢

可能的invalidoperationexception正确的处理方式

假设CurrencyExchangeRate是一个可为null的小数,则GetValueOrDefault扩展方法是最安全的选择-如果您希望在值为null时使用默认值零。

对于其他默认值,如1,请使用以下内容:

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

您从GetValueOrDefault中捕获的唯一异常将来自系统,如OutOfMemoryExceptions等。因此,您不太可能在此处出现错误。

您仍然应该使用try/catch。永远不要假设数据库中的数据总是有效的。例如,如果我将数据库中的数据类型更改为VARCHAR并添加一个null值,您的应用程序就会崩溃。因此,处理异常是有意义的。

try {
    var value = data.CurrencyExchangeRate.GetValueOrDefault();
} catch (InvalidOperationException e) {
   // Log the exception
}