foreach循环块外的Continue语句

本文关键字:Continue 语句 循环 foreach | 更新日期: 2023-09-27 18:15:39

使用c#,我们可以在foreach之外使用continue吗?我的意思是,我们可以跳过异常场景,转移到下一个记录验证吗?根据我的场景,我必须将代码重构为一个单独的方法,而不是在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;
}
}

foreach循环块外的Continue语句

不能在循环块外写入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);
    }
}