foreach (Widget item in items)
{
try
{
//do something...
}
catch { }
}
foreach (Widget item in items)
{
try
{
//do something...
}
catch { continue; }
}
Respuesta
En ese caso, nada, ya que la prueba es la última declaración de la instrucción compuesta de bucle. continue
siempre irá a la siguiente iteración o finalizará el ciclo si la condición ya no se cumple.
catch { continue; }
hará que el código comience en una nueva iteración, salteando cualquier código después del bloque catch
dentro del ciclo.
El compilador lo ignorará. Esto fue tomado de Reflector.
public static void Main(string[] arguments)
{
foreach (int item in new int[] { 1, 2, 3 })
{
try
{
}
catch
{
}
}
foreach (int item in new int[] { 1, 2, 3 })
{
try
{
}
catch
{
}
}
}
Las otras respuestas indican qué sucederá en el fragmento dado. Con su cláusula de captura como el código final en el ciclo, no hay diferencia funcional. Si tenía un código que seguía la cláusula de captura, entonces la versión sin "continuar" ejecutaría ese código. continue
es el hermanastro de break
, cortocircuita el resto del cuerpo del bucle. Con continue
, se salta a la siguiente iteración, mientras que break
sale por completo del ciclo. De todos modos, demuestra tus dos comportamientos por ti mismo.
for (int i = 0; i < 10; i++)
{
try
{
throw new Exception();
}
catch
{
}
Console.WriteLine("I'm after the exception");
}
for (int i = 0; i < 10; i++)
{
try
{
throw new Exception();
}
catch
{
continue;
}
Console.WriteLine("this code here is never called");
}
Si su muestra es seguida textualmente, entonces, yo diría que "no hay diferencia"!
Pero, si tiene sentencias que se ejecutarán después de su captura, ¡entonces es un juego completamente diferente!
catch { continue; }
saltará cualquier cosa después del bloque catch !!!
catch{}
seguirá ejecutando las instrucciones después del bloque catch !!
- 1. Java: Try-Catch-Continue?
- 2. php: catch exception y continue execution, ¿es posible?
- 3. La diferencia entre try/catch/lanzar y probar/catch (e)/tirar e
- 4. ¿Cuándo es un try catch no un try catch?
- 5. ¿cuál es la diferencia entre para bucle y para cada bucle en php
- 6. C# foreach dentro de un bucle Foreach
- 7. try/catch con InputMismatchException crea bucle infinito
- 8. ¿Cuál es la correcta? catch (_com_error e) o catch (_com_error & e)?
- 9. Ruby: ¿Cuál es la diferencia entre un bucle for y cada bucle?
- 10. C#: múltiples cláusulas catch
- 11. ¿cuál es la diferencia entre -C y gzipping un mysqldump?
- 12. ¿Es catch un método en java?
- 13. esperan en bloque catch
- 14. ¿Cuál es la diferencia entre Visual C++ y C++?
- 15. ¿Cuál es la diferencia entre C++ administrado y C#?
- 16. En C# ¿cuál es la diferencia entre ToUpper() y ToUpperInvariant()?
- 17. ¿Cuál es la diferencia entre System.Type y System.RuntimeType en C#?
- 18. Cuál es la diferencia entre & y operadores & en C#
- 19. ¿Cuál es la diferencia entre File y FileInfo en C#?
- 20. ¿Cuál es la diferencia entre Const y Static en C#?
- 21. ¿Cuál es la diferencia entre strtok_r y strtok_s en C?
- 22. ¿Cuál es la diferencia entre Managed C++ y C++/CLI?
- 23. ¿Cuál es la diferencia entre C y C incrustado?
- 24. ¿Cuál es la diferencia entre 'int'? y 'int' en C#?
- 25. ¿Cuál es la diferencia entre Process y ProcessStartInfo en C#?
- 26. ¿Cuál es la diferencia entre printf() y puts() en C?
- 27. ¿cuál es la diferencia entre atan y atan2 en C++?
- 28. Cuál es la diferencia entre memset y memcpy en C
- 29. Java Try Catch Finally blocks without Catch
- 30. Romper el bucle foreach interno y continuar bucle foreach externo
Esto es probablemente una optimización realizada por el compilador. es muy específico para el código de ejemplo anterior. si hubo declaraciones después del bloque catch (en el segundo bucle foreach), entonces probablemente deberías ver un continuar. Entonces no puedes decir, continuar es ignorado siempre. – SysAdmin
@SysAdmin - Tengo curiosidad por saber por qué hiciste este comentario cuando en ninguna parte de mi respuesta menciono que 'continue' siempre será ignorado. – ChaosPandion