1

我们需要解析/验证从 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。我的问题是,这是否是处理错误的有效或最佳方式,还是做一些更优化的事情?

4

2 回答 2

0

由于我们不知道您的业务逻辑,因此很难判断。但我建议评估所有可能的异常并在不同的catch块中处理它们。这使您能够更具体地处理错误。一个很好的提示是使用 Microsoft 的 StyleCop 和 FxCop。它们可以帮助您编写好的代码。在这种情况下,他们会告诉您不要捕获一般异常。

于 2013-07-03T07:27:04.150 回答
0

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

于 2013-07-03T07:47:47.870 回答