在foreach循环块之外继续声明

时间:2016-10-31 05:00:01

标签: c# foreach

使用C#,我们可以在foreach之外继续使用吗?我的意思是我们可以跳过异常情况并转到下一个记录验证吗?根据我的场景,我必须将代码重构为单独的方法,而不是在foreach循环中使用continue。

foreach (var name in Students)
{

//forloop should continue even if there is any logic exception and move to next record
CheckIfStudentExist();

}

private void CheckIfStudentExist()
{
try
{
//do some logic to verify if student exist & take to catch if there is some error in logic
}
Catch(Exception)
{
continue;
}

}

1 个答案:

答案 0 :(得分:1)

你不能在循环块之外写continue语句。

如果您希望异常保持沉默,只需将catch块保留为空。

private void CheckIfStudentExist()
{
    try
    {
        //do some logic to verify if student exist & take to catch if there is some error in logic
    }
    catch
    {       
    }
}

然而,空catch块是一种不好的做法。至少在里面写一些日志语句,这样异常就不会永远丢失。

最好声明我们自己的业务异常类,这样我们就可以捕获特定的异常类型并留下其他类型(可能是致命的)异常来暂停我们的代码执行。

private void CheckIfStudentExist()
{
    try
    {
        //do some logic to verify if student exist & take to catch if there is some error in logic
    }
    catch(ValidationException e)
    {       
        // example of the log statement. Change accordingly.
        Log.Error(e, "Validation failed when validating student Id {0}", studentId);
    }
}