正确处理错误并继续前进的方法

时间:2013-07-03 07:22:04

标签: c# optimization exception-handling

我们需要解析/验证从CSV或Excel文件中读取的大量行。我们读取行并应用业务规则来检查所有单元格/列是否包含有效数据。

即使错误或列发生了某些错误,应用程序仍应保持记录/列的验证。目前我们是这样的:

private void ValidateRow(RowObject obj)
{
    try
    {
        foreach(var col in obj.Cells)
        {
            ValidateColumn(col);
        }
    }
    catch(Exception ex)
    {
        //LOG ERROR
    }
}

列是这样的验证:

public void ValidateColumn(ColumnObject c)
{
    try
    {
        //validate c
    }
    catch(Exception e)
    {
        //LOG Column Error
    }
}

我们在验证行(ValidateRow)然后为每列(ValidateColumn)验证时在两个地方处理错误。我的问题是,这是处理错误的有效或最佳方式还是更优化的方法?

2 个答案:

答案 0 :(得分:0)

由于我们不了解您的业务逻辑,因此很难说清楚。但我建议评估所有可能的异常并在不同的catch块中处理它们。这使您可以更具体地处理错误。一个很好的提示是使用Microsofts StyleCop和FxCop。它们可以帮助您编写好的代码。在这种情况下,他们会告诉你不要抓住一般的例外情况。

答案 1 :(得分:0)

我认为你的方式非常正确和最优。如果你想继续前进,你应该总是在foreach中有一个try / catch。但是我猜你在这种情况下并不需要外部的try / catch,因为只有当obj或obj.Cells为null时它才会失败。除非您只发布了部分代码。虽然我同意评论,验证不应该首先抛出异常,但如果你使用的是一些3D派对库或任何你不确定的复杂代码,那么最好以你的方式处理它。