如何修复DivideByZeroException

时间:2015-02-03 21:06:35

标签: c# devexpress xaf dividebyzeroexception

我正在使用DevExpress XAF Framework。

我有一个具有大量Persistent Alias属性的类,可以对属性进行一些数学运算。以下是我的代码示例:

[PersistentAlias("ShortTermDebt + LongTermDebt / EquityTotal")]
public decimal DebtEquity
{
    get
    {
        return decimal.Parse(EvaluateAlias("DebtEquity").ToString());
    }
}

我尝试将Property设置为= 1

return DebtEquity = 1;

但所有这一切都是在保存时将属性重置为1.

我尝试将SQL Server中的每个属性的默认值设置为1.但这也不起作用。

基本上,我有一个Detailview,它有很多计算。当我想创建一个新的详细信息视图时,我得到一个DivideByZeroException,因为当然新的详细信息视图/对象不会有任何值。我有什么想法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

如果您可以获得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());
    }
}

catch异常的示例:

[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
        }
    }
}

答案 1 :(得分:0)

作为使用纯条件语言语法的替代方法,您可以使用:

[PersistentAlias("Iif(EquityTotal > 0,ShortTermDebt+LongTermDebt/EquityTotal, 0)")]
public decimal DebtEquity
{
    get => Convert.ToDecimal(EvaluateAlias(nameof(DebtEquity)))
}