Coach


In pieno rock ".net" roll
Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Anno 2005

Analizzare le Exception

Quando vengono generate delle Exception è buona norma scrivere un log per capire meglio cosa sia successo.

Di default la classe Exception  di significativo esponse solamente la proprietà Message che di solito non è che ci dice davvero molto, invece se vogliamo sapere quale metodo di quale classe ha causato l'ecezzione allora dobbiamo analizzare lo StackTrace.
Nello StackTrace vengono inseriti tutti i metodi(compresi quelli del framework) che hanno causato l'ecezzione, e quindi recuperare anche il nostro metodo.
Per fare questo dobbiamo utilizzare proprio la classe StackTrace ipresente nel namespace System.Diagnostic.
Nello StackTrace è presente un'array di StackFrame che comprendono tutti i metodi che hanno causato l'eccezione.
Quindi vediamo come poter recuperare le informazioni

//inizializzo la classe StackTrace con la mia exception che si chiama innerException
StackTrace _stackTrace =
new StackTrace(innerException);
StackFrame _stackFrame =
null;
//per recuperare lo stackFrame eseguo un ciclo for per recuperare l'indice e utilizzo
// il metodo GetFrame
for(int i=0; _stackTrace.FrameCount; i++)
{
_stackFrame = _stackTrace.GetFrame(i);
}

Una volta ottenuto lo StackFrame posso recuperare
il metodo : GetMethod()
il file :GetFileName()
la linea di codice :GetFileNumber()

ma ancor più interessante utilizzando la reflection con il metodo GetMethod() possiamo recuperare la classe di appartenza del metodo attraverso queste due righe di codice
MethodBase mt = _stackFrame.GetMethod();
string class = mt.ReflectedType
Categoria: .NET 1.1
mercoledì, 15 mar 2006 Ore. 12.57
  • Views Home Page: 300.578
  • Views Posts: 826.642
  • Views Gallerie: 356.737
  • n° Posts: 484
  • n° Commenti: 275












Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003