Kivételek felügyelt szálakban

A közös nyelvi futtatókörnyezet lehetővé teszi, hogy a szálak legtöbb kezeletlen kivétele természetes módon haladjon tovább. A legtöbb esetben ez azt jelenti, hogy a kezeletlen kivétel miatt az alkalmazás leáll. A közös nyelvi futtatókörnyezet azonban biztosít egy háttérrendszert bizonyos kezeletlen kivételekhez, amelyek a programfolyamat szabályozásához használatosak:

  • A ThreadAbortException egy szálba kerül, mert Abort meghívták. Ez csak .NET-keretrendszer alkalmazásokra vonatkozik.

  • A AppDomainUnloadedException program azért dob egy szálat, mert a szálat végrehajtó alkalmazástartomány kiürítve van.

  • A közös nyelvi futtatókörnyezet vagy a gazdagépfolyamat belső kivétellel leállítja a szálat.

Ha ezen kivételek bármelyike nincs kezelve a közös nyelvi futtatókörnyezet által létrehozott szálakban, a kivétel leállítja a szálat, de a közös nyelvi futtatókörnyezet nem teszi lehetővé a kivétel továbbhaladását.

Ha ezek a kivételek nincsenek kezelve a főszálban, vagy azokban a szálakban, amelyek nem felügyelt kódból adták be a futtatókörnyezetet, azok a szokásos módon haladnak, ami az alkalmazás leállítását eredményezi.

Feljegyzés

Lehetséges, hogy a futtatókörnyezet nem kezelt kivételt ad, mielőtt bármely felügyelt kódnak lehetősége lett volna egy kivételkezelő telepítésére. Annak ellenére, hogy a felügyelt kódnak nem volt lehetősége ilyen kivétel kezelésére, a kivétel természetesen folytatódhat.

Szálkezeléssel kapcsolatos problémák felfedése a fejlesztés során

Ha a szálak csendesen meghiúsulhatnak, az alkalmazás leállása nélkül súlyos programozási problémák léphetnek fel. Ez egy adott probléma a hosszabb ideig futó szolgáltatások és egyéb alkalmazások esetében. A szálak sikertelen működése miatt a program állapota fokozatosan megsérül. Az alkalmazás teljesítménye csökkenhet, vagy előfordulhat, hogy az alkalmazás nem válaszol.

Lehetővé teszi, hogy a szálak kezeletlen kivételei természetes módon haladjanak tovább, amíg az operációs rendszer leállítja a programot, elérhetővé teszi ezeket a problémákat a fejlesztés és a tesztelés során. A programmegszüntetésekkel kapcsolatos hibajelentések támogatják a hibakeresést.

Gazdagép felülbírálása

A nem felügyelt gazdagépek a Hosting API ICLRPolicyManager felületével felülbírálhatják a közös nyelvi futtatókörnyezet alapértelmezett nem kezelt kivételszabályzatát. Az ICLRPolicyManager::SetUnhandledExceptionPolicy függvény a nem kezelt kivételek házirendjének beállítására szolgál.

Lásd még