2015-02-03 6 views
0

Я использую DevExpress XAF Framework.Как исправить исключение DivideByZeroException

У меня есть класс с большим количеством Persistent Alias Атрибуты, которые выполняют некоторую математику по свойствам. Вот пример моего кода:

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

Я попытался установить свойство = 1

return DebtEquity = 1; 

Но все это делает сброс свойство 1 на сохранение.

Я попытался установить значение по умолчанию в SQL Server для каждого свойства в 1. Но это также не работает.

В принципе, у меня есть Detailview, на котором есть куча вычислений. И когда я хочу создать NEW Detail View, я получаю исключение DivideByZeroException, потому что, конечно, NEW Detail View/Object не будет иметь никаких значений. Любые идеи, как я могу обойти это?

+0

Я думаю, что вы будете нуждаться в круглые скобки вокруг добавления краткосрочной и долгосрочной задолженности, в противном случае он будет оценивать ' LongTermDebt/EquityTotal', затем добавьте 'ShortTermDebt'. –

ответ

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()); 
    } 
} 

Пример с уловом исключением:

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

Я бы порекомендовал вас не ловить исключение. Гораздо лучше избегать исключения, которое можно избежать, чем справиться с этим. –

+0

Это работает. Благодарю. –