Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Az alkalmazásoknak képesnek kell lenniük a végrehajtás során felmerülő hibák konzisztens kezelésére. A .NET egységesen értesíti az alkalmazásokat a hibákról: a .NET-műveletek kivételekkel jelzik a hibát.
Kivételek
Kivételt képeznek azok a hibaállapotok vagy váratlan viselkedések, amelyeket egy végrehajtó program tapasztal. Kivételek keletkezhetnek a kódjában található hibák vagy a hívott kódban (például egy megosztott könyvtárban), a nem elérhető operációs rendszer erőforrásai, a futási környezet által tapasztalt váratlan feltételek (például nem ellenőrizhető kód) miatt, és így tovább. Az alkalmazás egyes feltételekből képes helyreállni, másokból azonban nem. Bár a legtöbb alkalmazáskivüldetésből helyreállhat, a legtöbb futtatókörnyezeti kivételből nem tud helyreállni.
A .NET-ben egy olyan kivételről van szó, amely egy objektum, ami az System.Exception osztálytól örököl. A rendszer kivételt jelez a kód egy olyan területéről, ahol probléma lépett fel. A kivétel továbbítódik a veremben, amíg az alkalmazás nem kezeli, vagy a program megszűnik.
Kivételek és hagyományos hibakezelési módszerek
A nyelv hibakezelési modellje hagyományosan a nyelv egyedi módszerére támaszkodott a hibák észlelésére és a hozzájuk tartozó kezelők felderítésére, vagy az operációs rendszer által biztosított hibakezelési mechanizmusra. A .NET a kivételkezelés megvalósításának módja a következő előnyöket nyújtja:
A kivételek kivetése és kezelése ugyanúgy működik a .NET-programozási nyelvek esetében.
A kivételek kezeléséhez nincs szükség adott nyelvszintaxisra, de lehetővé teszi, hogy minden nyelv saját szintaxist definiáljon.
A kivételek a folyamat és a géphatárok között is előfordulhatnak.
A program megbízhatóságának növelése érdekében a kivételkezelési kód hozzáadható egy alkalmazáshoz.
A kivételek előnyt nyújtanak más hibaértesítési módszerekkel, például a visszatérési kódokkal szemben. A hibák nem lesznek észrevétlenek, mert ha kivételt jeleznek, és nem kezelik azt, a futtatókörnyezet leállítja az alkalmazást. Az érvénytelen értékek nem propagálnak tovább a rendszeren, mert a kód nem tudja ellenőrizni a hiba visszatérési kódját.
Gyakori kivételek
Az alábbi táblázat felsorol néhány gyakori kivételt, példákkal arra, hogy mi okozhatja őket.
| Kivétel típusa | Leírás | példa |
|---|---|---|
| Exception | Alaposztály az összes kivételhez. | Nincs (használja a kivétel származtatott osztályát). |
| IndexOutOfRangeException | A futtatókörnyezet csak akkor dobja el, ha egy tömb indexelése helytelen. | Tömb indexelése az érvényes tartományon kívül: arr[arr.Length+1] |
| NullReferenceException | A futtatókörnyezet csak null objektumra hivatkozva dobja ki. | object o = null; o.ToString(); |
| InvalidOperationException | Metódusok szerint dobva, ha érvénytelen állapotban van. | A Enumerator.MoveNext() hívása, miután eltávolított egy elemet az alapul szolgáló gyűjteményből. |
| ArgumentException | Az összes argumentum kivételének alaposztálya. | Nincs (használja a kivétel származtatott osztályát). |
| ArgumentNullException | Olyan metódusok által dobva, amelyek nem teszik lehetővé, hogy az argumentum null legyen. | String s = null; "Calculate".IndexOf(s); |
| ArgumentOutOfRangeException | Olyan metódusokkal dobva, amelyek ellenőrzik, hogy az argumentumok egy adott tartományban vannak-e. | String s = "string"; s.Substring(s.Length+1); |
Lásd még
- Kivételosztály és tulajdonságok
- Útmutató: A Try-Catch blokk használata kivételek elkapásához
- Hogyan használjunk adott kivételeket egy catch blokkban
- Útmutató: Hogyan dobjunk explicit módon kivételeket
- Útmutató: User-Defined kivételek létrehozása
- User-Filtered Kivételkezelők Használata
- Útmutató: Finally blokkok használata
- COM interop kivételek kezelése
- Ajánlott eljárások kivételekhez
- Amit minden devnek tudnia kell a runtime-beli kivételekről