A C# nyelv lehetőséget ad a saját magunk által definiált kivételek használatára is. A kivételek dobása a throw kulcsszóval történik.
throw (exception);
throw exception;
A program bármely szintjén, bárhol ”dobhatjuk” a kivételt a throw segítségével, és egy tetszőleges catch blokkal el is kaphatjuk. Amennyiben nem kapjuk el sehol, az a Main() függvény szintjén is megjelenik, végül az operációs rendszer lekezeli a saját hibakezelő rutinjával, ami legtöbbször azt jelenti, hogy a programunk leáll.
A következő példa bemutatja, hogyan dobhatunk saját kivételt.
class Verem
{
public Object Pop()
{
if (vm>0) { vm--; return t[vm]; }
else throw new Exception(”Üres a verem”);
}
}
A példában a verem tetejéről akarunk levenni egy elemet akkor, ha az nem üres. Amennyiben nincs már elem a veremben, ezt egy kivétel dobásával jelezzük. A kivétel feldobását a throw végzi, melynek paramétere egy exception osztály: Exception(”Hibaüzenet”). A kivétel dobásakor a new kulcsszót használtuk, mivel a definiált kivétel is egy osztály, így példányosítani kellett. A konstruktor paramétere egy string, melyben a hibaüzenetet adhatjuk meg, amit a kivétel elkapásakor kiírhatunk. (Ha nem kapjuk el, az operációs rendszer akkor is kiírja egy hibaablakban a hibaüzenetként megadott stringet.)