Виняткова ситуація, або виключення, - це виникнення аварійної події, яка може породжуватися некоректним використанням апаратури або неправильною роботою програми, наприклад діленням на нуль або переповнюванням. Зазвичай ці події приводять до завершення програми з системним повідомленням про помилку. С# дає програмістові можливість відновити працездатність програми і продовжити її виконання.
Виключення С# не підтримують обробку асинхронних подій, таких як помилки устаткування або переривання, наприклад натиснення клавіш Ctrl+C. Механізм виключень призначений тільки для подій, які можуть відбутися в результаті роботи самої програми і указуються явним чином. Виключення виникають тоді, коли деяка частина програми не змогла зробити те, що від неї було потрібно. При цьому інша частина програми може спробувати зробити що-небудь інше.
Виключення дозволяють логічно розділити обчислювальний процес на дві частини - виявлення аварійної ситуації і її обробка. Це важливо не тільки для кращої структуризації програми. Виключення генерує або середовище виконання, або програміст за допомогою оператора throw. У таблиці 4.1 приведені найбільш часто використовувані стандартні виключення, що генеруються середовищем. Вони визначені в просторі імен System. Всі вони є нащадками класу Exception, а точніше, нащадками його нащадка SystemException. Виключення виявляються і обробляються в операторові try.
Таблиця 4.1.
Часто використовувані стандартні виключення.
Ім'я
| Опис
|
ArithmeticException
| Помилка в арифметичних операціях або перетвореннях (є предком Dividebyzeroexception і Overflowexception)
|
ArrayTypeMismatchException
| Спроба збереження в масиві елементу несумісного типу
|
DivideByZeroException
| Спроба ділення на нуль
|
FormatException
| Спроба передати в метод аргумент невірного формату
|
IndexOutOfRangeException
| Індекс масиву виходить за межі діапазону
|
InvalidCastException
| Помилка перетворення типу
|
OutOfMemoryException
| Недостатньо пам'яті для створення нового об'єкту
|
OverFlowException
| Переповнювання при виконанні арифметичних операцій
|
StackOverFlowException
| Переповнення стека
|