如何继续foreach循环
本文关键字:foreach 循环 继续 何继续 | 更新日期: 2023-09-27 18:29:29
我有下面的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.
}
}
您不能,您突发了一个异常,而是在循环中移动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
放在前臂内侧,而不是外侧。或者,如果你需要它在外面,把另一个放在里面,处理异常。
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
}