Ich bin nicht so fasziniert von der BadImageFormatException, die ausgelöst wird, wenn ich eine Variable eines Visual C++-Typs deklariere, die in einer referenzierten Visual C++-Assembly definiert ist, sondern von der Tatsache, dass die Ausnahme nicht von der catch-Klausel von abgefangen wird die try-catch-Anweisung, die die Variablendeklaration unmittelbar umgibt, sondern durch die catch-Klausel der try-catch-Anweisung, die den Methodenaufruf der Methode umgibt, die die Variable deklariert.
public static void method()
{
try
{
Some_Visual_Cpp_Type o;
}
catch (Exception)
{
Console.WriteLine("caught inside the method");//apparently not called
}
}
public static void Main()
{
try
{
method();
}
catch (BadImageFormatException)
{
Console.WriteLine("caught outside the method");//prints "caught outside the method"
}
}
Kann mir bitte jemand dieses Verhalten erklären?
Lösung des Problems
Diese Ausnahme wird ausgelöst, wenn die Methode JITted wird, bevor ihr Catch-Block existiert.
Keine Kommentare:
Kommentar veröffentlichen