正确的处理错误的方法,并坚持下去
本文关键字:坚持 方法 处理 错误 | 更新日期: 2023-09-27 18:20:52
我们需要解析/验证从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
)时,我们在两个位置处理错误。我的问题是,这是处理错误的有效或最佳方式,还是做一些更优化的事情?
由于我们不了解您的业务逻辑,因此很难判断。但我建议评估所有可能的异常,并在不同的catch
块中处理它们。这使您能够更具体地处理错误。一个很好的提示是使用微软的StyleCop和FxCop。它们可以帮助您编写好的代码。在这种情况下,他们会告诉你不要捕捉一般的异常。
我认为你的方法是非常正确和最佳的。如果你想继续前进,你应该总是在前臂内侧尝试/接球。但我想在这种情况下,您并不真正需要外部try/catch,因为只有当obj或obj.Cells为null时,它才会失败。除非你只发布了部分代码。虽然我同意验证一开始就不应该抛出异常的评论,但如果你使用的是一些3d party库或任何你不确定的复杂代码,最好按照你的方式处理。