try tipos technical net manejo excepciones errores ejemplo como catch capturar asp c# .net exception

tipos - try catch c#



Lanzar excepciones en ASP.NET C# (3)

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 (observe el 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

¿Hay alguna diferencia entre simplemente decir throw; y throw ex; asumiendo que ex es la excepción que estás atrapando?


throw ex; borrará tu stacktrace. No hagas esto a menos que quieras borrar la pila stack. Solo usa throw;


Tienes dos opciones tiro; o arrojar el original excepcional como una innerecepción de una nueva excepción. Dependiendo de lo que necesites