Обробка винятків
try-catch
try {
}
catch (Exception ex) {
Console.WriteLine(ex.Message);
}
Після try-catch
finally {
}
Звільняє пам'ять яка могла бути виділеною в try
Запускає ваш код для цього випадку
можна і без catch
Згенерувати виняток
throw new Exception("Довжина більше 10 символів");
throw new ArgumentException("Argh!");
throw new NotImplementedException();
Обробка різних винятків
int x1, x2, d, sum = 0;
for (int i = 10; i < 30; i++)
{
try
{
string a = File.ReadAllText(i + ".txt");
string[] b = a.Split('\n');
x1 = Convert.ToInt32(b[0]);
x2 = Convert.ToInt32(b[1]);
d = checked(x1 * x2);
sum += d;
Console.WriteLine(i + ". d = " + d);
}
catch (FileNotFoundException ex)
{
File.AppendAllText("no_file.txt", i + ".txt");
}
catch (FormatException ex)
{
File.AppendAllText("bad_data.txt", i + ".txt");
}
catch (OverflowException ex)
{
File.AppendAllText("overflow.txt", i + ".txt");
}
}
System.NullReferenceException – визиваємо метод неіснуючого об'єкту
System.IndexOutOfRangeException – вихід за межі масиву
System.IO.IOException – помилка вводу/виводу
System.Net.WebException – HTTP помилка
System.Data.SqlClient.SqlException – SQL помилка
System.StackOverflowException – рекурсія методу
System.OutOfMemoryException – невистачає пам'яті
System.InvalidCastException – типи не співпадають
System.InvalidOperationException – поширена помилка в бібліотеках
System.ObjectDisposedException – об'єкт вже утилізовано