Is het mogelijk dat een uitzondering opborrelt bij het vangen van de algemene uitzondering?

Laten we zeggen dat we C# hebben aangeroepen door een onbeheerde C ++ -toepassing. De code van de beller is niet beschikbaar.

public void MethodCalledByUnmanagedCode()
{
try
{
   DoWork()
}
catch {}//assume we swallow exception, no logging or anything
}

In dit geval is er een manier mogelijk voor een uitzondering te bubbelen tot onbeheerde C ++ in elke omstandigheid?

1
@pst - er zijn meldingen van uitzonderingen die in precies deze omstandigheid opborrelen. Ik wil weten hoe dat mogelijk is. Merk op dat er een logging-mechanisme is dat hier wordt ingeplugd.
toegevoegd de auteur P.Brian.Mackey, de bron
Mijn ogen geven water.
toegevoegd de auteur user166390, de bron

2 antwoord

Uw code kan een ThreadAbortException .

ThreadAbortException is een speciale uitzondering die kan worden opgevangen, maar deze wordt automatisch opnieuw verhoogd aan het einde van het blok catch.

4
toegevoegd
1. Merk op dat met enige moeite het opnieuw gooien van de automaat kan worden voorkomen.
toegevoegd de auteur Alexei Levenkov, de bron

Er zijn ook uitzonderingen die in normale omstandigheden nooit aan uw uitzonderingsbehandelaar zoals StackOverflowException zullen worden gemaakt.

Zie details C# vangen een stack overflow-uitzondering .

2
toegevoegd