我有一个foreach
循环在 foreach 本身的条件下在循环期间中断。有没有办法try catch
抛出异常然后继续循环的项目?
这将运行几次,直到异常发生然后结束。
try {
foreach(b in bees) { //exception is in this line
string += b;
}
} catch {
//error
}
这根本不会运行,因为异常是在 foreach 的条件下
foreach(b in bees) { //exception is in this line
try {
string += b;
} catch {
//error
}
}
我知道你们中的一些人会问这是怎么发生的,所以这里是这样的:PrincipalOperationException
抛出异常,因为在(bees)Principal
中找不到 a (在我的示例中为 b )。GroupPrincipal
编辑:我添加了下面的代码。我还发现一个组成员指向一个不再存在的域。我通过删除成员轻松解决了这个问题,但我的问题仍然存在。你如何处理在 foreach 条件下抛出的异常?
PrincipalContext ctx = new PrincipalContext(ContextType.domain);
GroupPrincipal gp1 = GroupPrincipal.FindByIdentity(ctx, "gp1");
GroupPrincipal gp2 = GroupPrincipal.FindByIdentity(ctx, "gp2");
var principals = gp1.Members.Union(gp2.Members);
foreach(Principal principal in principals) { //error is here
//do stuff
}