НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
Мова програмування C#. Уроки W3Schools українською для початківців

En Es De

C# Винятки - Try..Catch


C# Винятки

Під час виконання коду C# можуть виникати різні помилки: помилки кодування, зроблені програмістом, помилки через неправильне введення чи інші непередбачені речі.

Якщо виникає помилка, C# зазвичай зупиняється та генерує повідомлення про помилку. Технічний термін для цього такий: C# викличе виключення (викине помилку).


C# try та catch

Інструкція try дозволяє визначити блок коду, який буде перевірено на помилки під час його виконання.

Інструкція catch дозволяє визначити блок коду, який буде виконано, якщо в блоці try станеться помилка.

Ключові слова try та catch бувають парами:

Синтаксис

try
{
  //  Блок коду для try
}
catch (Exception e)
{
  //  Блок коду для обробки помилок
}

Розглянемо наступний приклад, де ми створюємо масив із трьох цілих чисел:

Це призведе до помилки, оскільки myNumbers[10] не існує.

int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]); // error!

Повідомлення про помилку буде приблизно таким:

System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'

Якщо сталася помилка, ми можемо використати try...catch, щоб виявити помилку та виконати певний код для її обробки.

У наступному прикладі ми використовуємо змінну всередині блоку catch (e) разом із вбудованою властивістю Message, яка виводить повідомлення з описом винятку:

Приклад

try
{
  int[] myNumbers = {1, 2, 3};
  Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
  Console.WriteLine(e.Message);
}

Виведення буде:

Index was outside the bounds of the array.
Спробуйте самі »

Ви також можете вивести власне повідомлення про помилку:

Приклад

try
{
  int[] myNumbers = {1, 2, 3};
  Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
  Console.WriteLine("Щось пішло не комільфо.");
}

Виведення буде:

Щось пішло не комільфо.
Спробуйте самі »

Finally (Нарешті)

Інструкція finally дозволяє виконувати код після try...catch, незалежно від результату:

Приклад

try
{
  int[] myNumbers = {1, 2, 3};
  Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
  Console.WriteLine("Щось пішло не комільфо.");
}
finally
{
  Console.WriteLine("Тепер 'try catch' завершено.");
}

Виведення буде:

Щось пішло не комільфо.
Тепер 'try catch' завершено.
Спробуйте самі »

Ключове слово throw

Інструкція throw дозволяє створити спеціальну помилку.

Інструкція throw використовується разом із класом винятків. У C# доступно багато класів винятків: ArithmeticException, FileNotFoundException, IndexOutOfRangeException, TimeOutException, тощо:

Приклад

static void checkAge(int age)
{
  if (age < 18)
  {
    throw new ArithmeticException("У доступі відмовлено - вам має бути не менше 18 років.");
  }
  else
  {
    Console.WriteLine("Доступ надано - ти вже дебелий лобуряка!");
  }
}

static void Main(string[] args)
{
  checkAge(15);
}

У програмі з’явиться повідомлення про помилку:

System.ArithmeticException: 'У доступі відмовлено - вам має бути не менше 18 років.'

Якби age становив 20, ви не отримали б виключення:

Приклад

checkAge(20);

Виведення буде:

Доступ надано - ти вже дебелий лобуряка!
Спробуйте самі »