Головна‎ > ‎C#‎ > ‎

Обробка винятків

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 – об'єкт вже утилізовано