Virhekäsittely

Yksinkertainen virhekäsittely koodataan seuraavasti:

try 
{
 	//virheille altista koodia	
}
catch(System.Exception ex) 
{ 
	MessageBox.Show("Tapahtui virhe: " + ex.Message); 
}

Exception  -luokan jäseniä ovat mm.
Exception luokasta on myös peritty tarkempia virheluokkia kuten ArithmeticException, IndexOutOfRangeException, InvalidCastException jne...
Myös luokka ApplicationException on peritty luokasta Exception. ApplicationException luokan avulla on tarkoitus käsitellä sovelluksen omia keskeytysluokkia.
Voit haarautua eri käsittelijään riippuen virheestä seuraavasti:
try
{
	string j = "k";
	int i = (3/int.Parse(j));
	//int i = 3/0; //aiheuttaisi haarautumisen DivideByZeroException:iin
}
catch(DivideByZeroException dex)
{
	MessageBox.Show("Tapahtui nollalla jakovirhe: " + dex.Message);
}
catch(System.FormatException fex)
{
	MessageBox.Show("Tapahtui formatointivirhe: " + fex.Message);
}
    
Toisaalta voidaan "nostattaa" virhe throw:lla seuraavasti:
try
{
	string j = "4"; //muuta "4" esim. "merkkijono"
	if( int.Parse(j).GetType() != System.Type.GetType("System.Int32"))
		throw new System.FormatException(); //nostetaan virhe
	int i = (3/int.Parse(j));
}
catch(DivideByZeroException dex)
{
	MessageBox.Show("Tapahtui nollalla jakovirhe: " + dex.Message);
}
catch(System.FormatException fex)
{
	MessageBox.Show("Tapahtui formatointivirhe: " + fex.Message);
}    
    
Resurssien vapautus

Jos sovelluksessa käytetään resursseja jotka pitää vapauttaa tapahtui virhe tai ei toimitaan seuraavasti:
try 
{
 	//esim. aukaistaan tiedosto	
}
catch(System.Exception ex) 
{ 
	MessageBox.Show("Tapahtui virhe: " + ex.Message); 
}
finally 
{
	//tämä suoritetaan tapahtui virhettä tai ei
	//siis tässä suljetaan tiedosto
}	
Laajemmissa sovelluksissa kannattaa yleensä tehdä omat poikkeusluokat perimällä ne .NET:n poikkeusluokista.