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
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!"
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 😉
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