Tengo un bucle foreach
que se rompe durante el bucle en la condición del foreach mismo. ¿Hay alguna manera de try catch
el elemento que lanza la excepción y luego continuar el ciclo?Excepción de captura lanzada en una condición forecech
Esto se ejecutará varias veces hasta que la excepción llegue y termine.
try {
foreach(b in bees) { //exception is in this line
string += b;
}
} catch {
//error
}
Esto no funciona en absoluto, porque la excepción está en la condición de la foreach
foreach(b in bees) { //exception is in this line
try {
string += b;
} catch {
//error
}
}
Sé que algunos de ustedes van a preguntar cómo esto está sucediendo por lo que aquí es la siguiente: Excepción PrincipalOperationException
se está lanzando porque un Principal
(b en mi ejemplo) no se puede encontrar en GroupPrincipal
(abejas).
Edit: He agregado el código a continuación. También descubrí que un miembro del grupo apuntaba a un dominio que ya no existe. Solucioné esto fácilmente al eliminar el miembro, pero mi pregunta sigue en pie. ¿Cómo manejas las excepciones que se lanzan dentro de la condición de un 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
}
El problema no está en "condiciones". Está en el proceso de enumerar el objeto 'abejas'. Para fines de depuración, trate de enumerar "manualmente" las "abejas". Es una especie de 'IEnumerable' o 'IEnumerable'. Haga manualmente '.MoveFirst()' y vea si obtiene la excepción de inmediato. –
Guau, no me di cuenta de que C# no tenía un currículum el próximo ... Acabo de encontrar todos estos foros de chicos buscando el equivalente. Supongo que es simplemente otra cosa buena acerca de ser un desarrollador de VB.net. Mis disculpas compañeros – Ccorock
@mellamokb, En realidad, yo tampoco lo uso demasiado. Solía trabajar con un programador de C++ bastante interesante que se vio obligado a escribir en Vb.net, que arrojaría el maldito código en On resume resume next. ¿Por qué debería inventar algo aquí? – Ccorock