Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: SARGE553413 en 12 Julio 2014, 16:51 pm



Título: Duda con excepciones en .NET
Publicado por: SARGE553413 en 12 Julio 2014, 16:51 pm
Hola a todos.

Tengo un bloque 'try' dentro del cual hay 5 llamadas a metodos que lanzan InvalidOperationException.
Me gustaría saber, en el bloque 'catch', cuál de los 5 métodos ha lanzado la excepción, para imprimir el nombre del método por pantalla.

¿Cómo puedo saber que método ha lanzado la excepción, si todos lanzan la misma?

Gracias y saludos.


Título: Re: Duda con excepciones en .NET
Publicado por: Eleкtro en 12 Julio 2014, 17:10 pm
Puedes obtener el nombre del método que lanzó la excepcion, utilizando la propiedad Exception.TargetSite (http://msdn.microsoft.com/en-us/library/system.exception.targetsite.aspx).

Citar
Gets the method that throws the current exception.

Nota: Pero antes de pensar en usarlo para todas las circunstancias, deberías leer las "Remarks" del MSDN.

Ejemplo de uso:

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Test() Handles MyBase.Shown
  4.  
  5.        Try
  6.            Me.Method1()
  7.            Me.Method2()
  8.  
  9.        Catch ex As Exception
  10.            MessageBox.Show(String.Format("Nombre del método: {0}", ex.TargetSite.Name))
  11.  
  12.        End Try
  13.  
  14.    End Sub
  15.  
  16.    Private Sub Method1()
  17.        Exit Sub
  18.        Throw New InvalidOperationException
  19.    End Sub
  20.  
  21.    Private Sub Method2()
  22.        Throw New InvalidOperationException
  23.    End Sub
  24.  
  25. End Class

PD: También está disponible el nombre del método en el StackTrace (http://msdn.microsoft.com/en-us/library/system.exception.stacktrace%28v=vs.110%29.aspx), pero deberías parsear el String resultante, solo te lo comento como dato adicional porque sería una tontería hacer eso, ya que TargetSite obtiene el nombre desde el StackTrace, así que además si el StackTrace está vacío tampoco habrá un TargetSite accesible.

Saludos.


Título: Re: Duda con excepciones en .NET
Publicado por: SARGE553413 en 12 Julio 2014, 18:08 pm
Ok, gracias.


Título: Re: Duda con excepciones en .NET
Publicado por: elezekiel en 17 Julio 2014, 00:24 am
exceelente ejemplo me fue de utilidad :D

gracias!!