C# 如何继续foreach循环

C# 如何继续foreach循环,c#,foreach,C#,Foreach,下面是for each循环,我想知道在抛出异常后如何继续执行该循环,以便它进入下一个数组索引,并且系统不会失败 try { //making name array and other checks foreach (string s in namearry) { var timelineData = oAuthTwitterWrapper.GetMyTimeline(s); TwitterData.TimeLineData(timelineDat

下面是for each循环,我想知道在抛出异常后如何继续执行该循环,以便它进入下一个数组索引,并且系统不会失败

try
{
//making name array and other checks 
    foreach (string s in namearry)
    {
        var timelineData = oAuthTwitterWrapper.GetMyTimeline(s);
        TwitterData.TimeLineData(timelineData, s, int.Parse(dr["ClientId"].ToString()));
        //  var followersId = oAuthTwitterWrapper.GetFolowersId(s);
        // var loc = oAuthTwitterWrapper.GetFolowersLoc(followersId);
        //  TwitterData.Follower(loc, s);
    }
}
catch(Exception ex)
{
    //logging exception 
}

理想情况下,我会尽量避免所有的例外情况。在您的情况下,可以在foreach循环中处理异常。在下面的示例中,我添加了必要的检查,以避免异常首先发生。像这样

foreach (string s in namearry)
{
    try
    {
        var timelineData = oAuthTwitterWrapper.GetMyTimeline(s);
        if(timelineData!=null)
        {
             int clientID;
             if(int.TryParse(dr["ClientId"].ToString(), out clientID))
             {
                  TwitterData.TimeLineData(timelineData, s, clientID);            
             }
        }
    }
    catch(Exception exp)
    {
        //do logging here.
    }
}

理想情况下,我会尽量避免所有的例外情况。在您的情况下,可以在foreach循环中处理异常。在下面的示例中,我添加了必要的检查,以避免异常首先发生。像这样

foreach (string s in namearry)
{
    try
    {
        var timelineData = oAuthTwitterWrapper.GetMyTimeline(s);
        if(timelineData!=null)
        {
             int clientID;
             if(int.TryParse(dr["ClientId"].ToString(), out clientID))
             {
                  TwitterData.TimeLineData(timelineData, s, clientID);            
             }
        }
    }
    catch(Exception exp)
    {
        //do logging here.
    }
}

你不能,你破例了,而是在循环中移动try/catch

foreach (string s in namearry)
{
    try {
        //making name array and other checks 
        var timelineData = oAuthTwitterWrapper.GetMyTimeline(s);
        TwitterData.TimeLineData(timelineData, s, int.Parse(dr["ClientId"].ToString()));
        //  var followersId = oAuthTwitterWrapper.GetFolowersId(s);
        // var loc = oAuthTwitterWrapper.GetFolowersLoc(followersId);
        //  TwitterData.Follower(loc, s);
    }
    catch(Exception ex) {
        //logging exception 
    }
}

你不能,你破例了,而是在循环中移动try/catch

foreach (string s in namearry)
{
    try {
        //making name array and other checks 
        var timelineData = oAuthTwitterWrapper.GetMyTimeline(s);
        TwitterData.TimeLineData(timelineData, s, int.Parse(dr["ClientId"].ToString()));
        //  var followersId = oAuthTwitterWrapper.GetFolowersId(s);
        // var loc = oAuthTwitterWrapper.GetFolowersLoc(followersId);
        //  TwitterData.Follower(loc, s);
    }
    catch(Exception ex) {
        //logging exception 
    }
}

将你的try-catch语句放入循环,并在catch块中使用continue关键字。

将你的try-catch语句放入循环,并在catch块中使用continue关键字。

try
放在foreach内部,而不是外部。 或者,如果您需要它在外部,请将另一个放在内部,以处理异常

try{
//making name array and other checks, that may trigger exceptions
    foreach (string s in namearry)
    {
        try
        {
            var timelineData = oAuthTwitterWrapper.GetMyTimeline(s);
            TwitterData.TimeLineData(timelineData, s, int.Parse(dr["ClientId"].ToString()));
            //  var followersId = oAuthTwitterWrapper.GetFolowersId(s);
            // var loc = oAuthTwitterWrapper.GetFolowersLoc(followersId);
            //  TwitterData.Follower(loc, s);
        }
        catch(Exception ex)
        {
            //logging exception: this will override the outer handler, which will not be called.
        }
    }
}
catch(Exception ex){
    //logging exception
    //exceptions raised before entering the foreach are handled here
}
try
放在foreach内部,而不是外部。 或者,如果您需要它在外部,请将另一个放在内部,以处理异常

try{
//making name array and other checks, that may trigger exceptions
    foreach (string s in namearry)
    {
        try
        {
            var timelineData = oAuthTwitterWrapper.GetMyTimeline(s);
            TwitterData.TimeLineData(timelineData, s, int.Parse(dr["ClientId"].ToString()));
            //  var followersId = oAuthTwitterWrapper.GetFolowersId(s);
            // var loc = oAuthTwitterWrapper.GetFolowersLoc(followersId);
            //  TwitterData.Follower(loc, s);
        }
        catch(Exception ex)
        {
            //logging exception: this will override the outer handler, which will not be called.
        }
    }
}
catch(Exception ex){
    //logging exception
    //exceptions raised before entering the foreach are handled here
}

将try/catch放在foreach中将try/catch放在foreach中因此,将try/catch放在for-each中可以阻止程序中断,在这种情况下,我仍然需要我拥有的那一个吗?如果你在函数中执行其他操作,那么你需要它,否则就不需要它。如果我离开另一个try-and-catch,它仍然会跳出循环,或者不跳出循环,我正在从另一个数据库中提取行的数据。因为这个循环在另一个循环的内部,所以通过将try-and-catch放入for每一个都会阻止程序中断,在这种情况下,我仍然需要我拥有的那一个吗?如果你在函数中执行其他操作,那么你需要它,否则就不需要它。如果我离开另一个,尝试捕获它,它仍然会跳出循环,或者不跳出循环。我正在从另一个数据库中提取行的数据。因为这个循环在另一个数据库中