引发异常C#后保持方法执行

时间:2018-11-02 18:25:50

标签: c# exception

所以我有这种方法可以验证文件的格式。如果文件有问题,它将引发异常,然后在GUI中捕获该异常并向用户显示一条消息。 问题是现在我必须添加一个新功能来显示文件的所有错误。所以我的想法是从抛出的异常中收集所有消息,并将它们添加到列表中。但是由于该方法的执行在引发第一个异常之后停止,因此我无法确定文件是否存在其他问题。 有什么方法可以在引发异常后保持方法正确运行? 谢谢

2 个答案:

答案 0 :(得分:4)

非常简单,将您的try / catch块放入循环中,即可读取项目。

另一个可能比依赖异常更好的选择是编写“ validate()”函数。

答案 1 :(得分:4)

听起来您有一些这样的代码。...

foreach(var record in records)
{
    bool valid = Validate(record);

    if(!valid)
    {
        throw new Exception("Record was invalid!");
    }
}

相反,您应该像这样对它进行图案化:

var validationErrors = new List<ValidationError>();

foreach(var record in records)
{
    ValidationResult validationResult = Validate(record);

    if(!validationResult.Valid)
    {
        validationErrors.Add(validationResult.ValidationError);
        continue;
    }
}

这样,您就不会在非异常情况下使用昂贵的异常,并且可以继续处理其余有效记录。