小编Chr*_*nes的帖子

使用Catch Blocks返回,不好主意?

这可能是一个愚蠢的问题,但我对使用try/catch块的性能感兴趣.

我有一个DataGrid,它将Converter分配给DataGridCell的background属性.在转换器中,我将今年数据的值与去年的数据进行比较; 如果今年的数据> 3%,我将返回绿色背景; 如果它> 0%且<3%,我会返回黄色; 如果它<0%,我返回红色:

string x = values[0].ToString().Replace("$", "").Replace(",", ""); //This year's number
string y = values[1].ToString().Replace("$", "").Replace(",", ""); //Last year's

result = (((float.Parse(x) * 100) / float.Parse(y)) - 1) * 100;

if (result >= 3)
    return Brushes.LimeGreen;
else if (result >= 0)
    return Brushes.Yellow;
else
    return Brushes.Red;
Run Code Online (Sandbox Code Playgroud)

但是,在某些情况下,该单元格的价值不会超过去年; 你可以猜到,除以0(或者当Cell为空时转换器似乎收到的一些文本)是一个非常糟糕的主意,并会抛出异常.所以,我决定最简单的方法是:

try
{
    result = (((float.Parse(x) * 100) / float.Parse(y)) - 1) * 100;
}
catch
{
    return Brushes.DarkOrange;
}
Run Code Online (Sandbox Code Playgroud)

因此,如果抛出异常(由此没有可比较的值),返回橙色并将其称为一天.(编辑:是的,我确实希望在没有值可比较时返回橙色.

目前,我可以预测它现在只会发生在一行数据中,因此它只会在填充时捕获大约10个单元格.但随着未来的发展,它有可能让它发生更多次.

try/catch块是处理这个问题的最简单,最快捷的方法(据我所知),但这显然不是唯一的方法,特别是因为我知道错误.那么在这种情况下使用try/catch块是个坏主意吗?而且糟糕的是,我的意思是它会降低性能,因为它经过多次,多次迭代?鉴于我知道错误是什么,我应该先抢占它,还是使用try/catch块?

.net c# try-catch

1
推荐指数
2
解决办法
261
查看次数

标签 统计

.net ×1

c# ×1

try-catch ×1