首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复DivideByZeroException

如何修复DivideByZeroException
EN

Stack Overflow用户
提问于 2015-02-03 21:06:34
回答 2查看 451关注 0票数 0

我正在使用DevExpress XAF框架。

我有一个包含大量Persistent Alias属性的类,它对属性做了一些计算。下面是我的代码示例:

代码语言:javascript
复制
[PersistentAlias("ShortTermDebt + LongTermDebt / EquityTotal")]
public decimal DebtEquity
{
    get
    {
        return decimal.Parse(EvaluateAlias("DebtEquity").ToString());
    }
}

我尝试将属性设置为=1

代码语言:javascript
复制
return DebtEquity = 1;

但这只是在保存时将属性重置为1。

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

基本上,我有一个Detailview,上面有大量的计算。当我想要创建一个新的细节视图时,我会得到一个DivideByZeroException,因为一个新的细节视图/对象不会有任何值。有什么办法能让我避开这件事吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-03 21:20:26

如果您可以获得EquityTotal的值,那么您可以首先检查它的零值,否则就可以捕获异常。

首先检查值的示例:

代码语言:javascript
复制
[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异常的示例:

代码语言:javascript
复制
[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
        }
    }
}
票数 3
EN

Stack Overflow用户

发布于 2021-01-23 01:27:49

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

代码语言:javascript
复制
[PersistentAlias("Iif(EquityTotal > 0,ShortTermDebt+LongTermDebt/EquityTotal, 0)")]
public decimal DebtEquity
{
    get => Convert.ToDecimal(EvaluateAlias(nameof(DebtEquity)))
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28308739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档