A C# nyelv tartalmaz két további kulcsszót a kivételek kezelésére és a hibák javítására. Az egyik a checked a másik pedig az unchecked. Amennyiben egy értékadáskor egy változóba olyan értéket szeretnénk elhelyezni, mely nem fér el annak értéktartományában, OverflowException hibával leáll a programunk. Jobb esetben az ilyen hibákat el tudjuk kapni a megfelelő catch{} blokkal, de az unchecked kulcsszó használatával megakadályozhatjuk a kivétel keletkezését is, mivel ilyenkor elmarad a hibaellenőrzés.
unchecked
{
int a=2000000000000;
}
Az értékadás megtörténik, a változóba bekerül a csonkított érték. (Amekkora még elfér benne.)
A checked alkalmazásával pontosan az előbbi folyamat ellenkezőjét érjük el. Az ellenőrzés mindenképpen megtörténik, és kivétel keletkezik a hiba miatt.
A checked és unchecked kulcsszavak nem csak blokként használhatóak: cehecked{}, uncehecked{}, hanem kimondottan egy kifejezés vagy értékadás vizsgálatánál is. Ekkor a következő formában írhatjuk őket:
checked( kifejezés, művelet, vagy értékadás);
uncehecked(kifejezés, művelet, vagy értékadás);;
Ebben a formában csak a zárójelek közé írt kifejezésekre, vagy egyéb műveletekre vonatkoznak. Alapértelmezés szerint a checked állapot érvényesül a programokban található minden értékadásra és műveletre. Csak nagyon indokolt esetekben használjuk ki az unchecked nyújtotta lehetőségeket, mert könnyen okozhatunk végzetes hibákat a programokban.
A fentiek ismeretében elmondhatjuk, hogy a hibakezelés, a kivételek kezelése nagyon fontos és hasznos lehetőség a C# nyelvben. Nélküle nehéz lenne elképzelni hibátlanul működő programokat. Igaz, hogy a kivételkezelést alkalmazó programok sem tökéletesek, de talán nem állnak le végzetes hibákkal, nem keserítik sem a programozó, sem a felhasználó életét.