Laden...

Erkennen WO eine Exception auftrat?

Erstellt von preli vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.057 Views
preli Themenstarter:in
343 Beiträge seit 2007
vor 14 Jahren
Erkennen WO eine Exception auftrat?

Hallo,

ich würde gerne wissen ob es eine Möglichkeit gibt, wenn eine Exception auftritt, herauszufinden WO genau sie geworfen wurde.

zur Veranschaulichung:


try
{

function1();
function2();
function3();
function4();
function5();

} catch (Exception ex)
{
  //hier will ich nun feststellen ob die Exception in Funktion 1,2,3,4 oder 5 auftrat
}

Ist so etwas technisch überhaupt möglich (evt. per Reflection)?
Wäre toll wenn da jemand was genaueres dazu wissen würde.

Gruß
Preli

[- www.saftware.net -](http://www.saftware.net/)
6.911 Beiträge seit 2009
vor 14 Jahren

Hallo,

die gewünschten Informationen stecken in der Variablen ex. ZB der Methodenname ist in ex.TargetSite.Name enthalten.

hier will ich nun feststellen ob die Exception in Funktion 1,2,3,4 oder 5 auftrat

Dazu dann die Zahl aus dem Methodennamen extrahieren 😉

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

preli Themenstarter:in
343 Beiträge seit 2007
vor 14 Jahren

Na sieh einer an.
So einfach geht das 😁

Vielen Dank

Die Funktionen 1,2,3,4 und 5 waren nur exemplarisch. Ich bennen meine Methoden natürlich sinnvoller 😉

[- www.saftware.net -](http://www.saftware.net/)
Gelöschter Account
vor 14 Jahren

kannst du auch im stack trace erkennen.

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo preli,

also ich finde es ehrlich gesagt sinnvoller zu schreiben

try {
   function1();
} catch (Exception ex) {
   // hier Exception in Funktion 1
}
try {
   function2();
} catch (Exception ex) {
   // hier Exception in Funktion 2
}
// usw.

statt

try {
   function1();
   function2();
   // usw. 
} catch (Exception ex) {
   switch (ex.TargetSite.Name) {
      case "function1":
         // hier Exception in Funktion 1
         break;
      case "function2":
         // hier Exception in Funktion 2
         break;
      // usw.
   }
}

Zumal mal bei der ersten Variante gezielt je nach Methode die zugehörigen Exceptiontypen fangen kann.

Wenn du dagegen nur als Entwickler wissen willst, wo die Exception aufgetreten ist, dann schau dir Exception.StackTrace an. Der StackTrace sagt mehr als TargetSite.

herbivore