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:

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.

Megjegyzé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

Amikor a szálak csendben meghibásodhatnak anélkül, hogy az alkalmazás leállna, komoly programozási problémák észrevétlenül maradhatnak. 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, ezáltal a fejlesztés és a tesztelés során nyilvánvalóvá válnak ezek a problémák. 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