如何修复 DivideByZeroException
How do I fix a DivideByZeroException
我正在使用 DevExpress XAF 框架。
我有一个 Class 有很多 Persistent Alias
属性,可以对属性进行一些数学计算。这是我的代码示例:
[PersistentAlias("ShortTermDebt + LongTermDebt / EquityTotal")]
public decimal DebtEquity
{
get
{
return decimal.Parse(EvaluateAlias("DebtEquity").ToString());
}
}
我试过将 属性 设置为 = 1
return DebtEquity = 1;
但这只是在保存时将 属性 重置为 1。
我已经尝试将 SQL 服务器中每个 属性 的默认值设置为 1。但这也不起作用。
基本上,我有一个包含大量计算的详细视图。当我想创建一个 NEW Detail View 时,我得到一个 DivideByZeroException,因为 NEW Detail View/Object 当然不会有任何值。我有什么办法可以解决这个问题吗?
如果你能得到EquityTotal的值,那么你可以先检查它是否为零,否则你可以捕获异常。
先有校验值的例子:
[PersistentAlias("ShortTermDebt + LongTermDebt / EquityTotal")]
public decimal DebtEquity
{
get
{
if (EquityTotal == 0) return 0; // return 0 or whatever number you want when EquityTotal is equal to zero
return decimal.Parse(EvaluateAlias("DebtEquity").ToString());
}
}
捕获异常的示例:
[PersistentAlias("ShortTermDebt + LongTermDebt / EquityTotal")]
public decimal DebtEquity
{
get
{
try
{
return decimal.Parse(EvaluateAlias("DebtEquity").ToString());
}
catch (DivideByZeroException)
{
return 0; // return 0 or whatever number you want when EquityTotal is equal to zero
}
}
}
作为使用纯条件语言语法的替代方法,您可以使用:
[PersistentAlias("Iif(EquityTotal > 0,ShortTermDebt+LongTermDebt/EquityTotal, 0)")]
public decimal DebtEquity
{
get => Convert.ToDecimal(EvaluateAlias(nameof(DebtEquity)))
}
我正在使用 DevExpress XAF 框架。
我有一个 Class 有很多 Persistent Alias
属性,可以对属性进行一些数学计算。这是我的代码示例:
[PersistentAlias("ShortTermDebt + LongTermDebt / EquityTotal")]
public decimal DebtEquity
{
get
{
return decimal.Parse(EvaluateAlias("DebtEquity").ToString());
}
}
我试过将 属性 设置为 = 1
return DebtEquity = 1;
但这只是在保存时将 属性 重置为 1。
我已经尝试将 SQL 服务器中每个 属性 的默认值设置为 1。但这也不起作用。
基本上,我有一个包含大量计算的详细视图。当我想创建一个 NEW Detail View 时,我得到一个 DivideByZeroException,因为 NEW Detail View/Object 当然不会有任何值。我有什么办法可以解决这个问题吗?
如果你能得到EquityTotal的值,那么你可以先检查它是否为零,否则你可以捕获异常。
先有校验值的例子:
[PersistentAlias("ShortTermDebt + LongTermDebt / EquityTotal")]
public decimal DebtEquity
{
get
{
if (EquityTotal == 0) return 0; // return 0 or whatever number you want when EquityTotal is equal to zero
return decimal.Parse(EvaluateAlias("DebtEquity").ToString());
}
}
捕获异常的示例:
[PersistentAlias("ShortTermDebt + LongTermDebt / EquityTotal")]
public decimal DebtEquity
{
get
{
try
{
return decimal.Parse(EvaluateAlias("DebtEquity").ToString());
}
catch (DivideByZeroException)
{
return 0; // return 0 or whatever number you want when EquityTotal is equal to zero
}
}
}
作为使用纯条件语言语法的替代方法,您可以使用:
[PersistentAlias("Iif(EquityTotal > 0,ShortTermDebt+LongTermDebt/EquityTotal, 0)")]
public decimal DebtEquity
{
get => Convert.ToDecimal(EvaluateAlias(nameof(DebtEquity)))
}