GOOGLE ADS

Mittwoch, 27. April 2022

Warum kann in .NET eine BadImageFormatException nicht in der Methode abgefangen werden, die sie auslöst?

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

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...