可能的invalidoperationexception正确的处理方式
本文关键字:处理 方式 invalidoperationexception | 更新日期: 2023-09-27 18:20:02
我对尝试处理可能的InvalidOperationException的最佳方法感到困惑。
在我的代码中,我在(decimal)data.CurrencyExchangeRate
下得到一条蓝线,因此将代码更改为:
data.CurrencyExchangeRate.GetValueOrDefault()
去除蓝线。
由于数据来自数据库,并且列是十进制,因此它永远不会为null。
那么GetValueOrDefault
是处理可能的错误的最佳方法吗?
我只是不确定如何最好地处理它。
感谢
假设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
}