¿Hay alguna diferencia entre simplemente decir throw;
y throw ex;
suponiendo que ex
es la excepción que está atrapando?Disparando excepciones en ASP.NET C#
Respuesta
throw ex;
borrará su stacktrace. No hagas esto a menos que quieras borrar la pila stack. Solo use throw;
Tiene dos opciones; o arrojar el original excepcional como una innerecepción de una nueva excepción. Dependiendo de lo que necesites
Aquí hay un fragmento de código simple que ayudará a ilustrar la diferencia. La diferencia es que throw ex restablecerá el seguimiento de la pila como si la línea "throw ex;
" fuera la fuente de la excepción.
Código:
using System;
namespace StackOverflowMess
{
class Program
{
static void TestMethod()
{
throw new NotImplementedException();
}
static void Main(string[] args)
{
try
{
//example showing the output of throw ex
try
{
TestMethod();
}
catch (Exception ex)
{
throw ex;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.WriteLine();
Console.WriteLine();
try
{
//example showing the output of throw
try
{
TestMethod();
}
catch (Exception ex)
{
throw;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.ReadLine();
}
}
}
salida (notar la diferente seguimiento de la pila):
System.NotImplementedException: The method or operation is not implemented.
at StackOverflowMess.Program.Main(String[] args) in Program.cs:line 23
System.NotImplementedException: The method or operation is not implemented.
at StackOverflowMess.Program.TestMethod() in Program.cs:line 9
at StackOverflowMess.Program.Main(String[] args) in Program.cs:line 43
- 1. Disparando excepciones de ContinueWith
- 2. application_start disparando inesperadamente asp.net
- 3. ASP.Net HttpHandler ProcessRequest() disparando dos veces
- 4. ASP.NET - IHttpModule.BeginRequest activando 2X, Application_BeginRequest disparando 1X
- 5. tecla Intro en asp.net disparando el botón incorrecto
- 6. Excepciones dentro de excepciones en C++
- 7. Ignorar excepciones en C#
- 8. Excepciones personalizadas en C++
- 9. ASP.NET MVC manejo de excepciones
- 10. En ASP.NET cómo identificar/procesar excepciones 404?
- 11. ¿Cómo debo registrar excepciones en ASP.NET?
- 12. ¿Cómo manejar excepciones generales en Asp.Net MVC?
- 13. Manejo de excepciones en global.asax ASP.NET MVC
- 14. Tratamiento de excepciones en Webforms de ASP.NET
- 15. ACTION_BATTERY_CHANGED disparando como loco
- 16. UIGestureRecognizer ¿disparando dos veces?
- 17. Excepciones non-stop en C#
- 18. manejo de excepciones en C#
- 19. Conversión de excepciones de punto flotante en excepciones de C++
- 20. C++ excepciones no controladas
- 21. caso OnTextChanged no está disparando
- 22. Knockout disparando enlace de clic en applyBindings
- 23. ASP.net MVC [HandleError] no detecta excepciones
- 24. Gestión de excepciones ASP.NET MVC Web API
- 25. ASP.NET MVC: ¿Dónde arrojar las excepciones?
- 26. Server-side ASP.Net Ajax manejo de excepciones
- 27. Comiendo excepciones en C# om nom nom
- 28. Excepciones de mala asignación en C++
- 29. ¿Qué son excepciones marcadas en Java/C#?
- 30. Manejo de excepciones generales en C#
¿hay muchas circunstancias en las que 'throw ex' es útil? –
Nunca he visto uno, aunque podría haberlo. Como se menciona a continuación, he oído de adjuntarlo a la innerecepción, pero no puedo pensar en ninguna razón por la que quiera destruir su rastro de pila. – GEOCHET