Обробка виключень(exceptions)
Виключення – це помилка, яка виникає під час виконання програми. Коли комп’ютер помічає таку помилку, він зупиняє виконання програми і видає відповідне повідомлення. В C#передбачено перехоплення виключень, що дозволяє спростити та прискорити виправлення помилок.
Розглянемо найпростіший спосіб обробки виключень. Основою є блоки, які визначаються ключовими словами try і catch. Частина програми, яку треба проконтролювати на предмет обробки виключень, заклечається в блок try. Виключення, яке виявлено в цьому блоку, передається в наступний за ним блок catch.Він виконує дії, які були задані програмістом. За одним блоком try може слідувати кілька блоків catch. Після виправлення помилки при повторних запусках відбувається пошук інших помилок. У випадку виявлення помилки операція return зупиняє роботу програми після try і catch блоків. Це необхідно тому, що ідентифікатори, які задіяні в try- блоці, після виходу із нього не сприймаються комп’ютером на стадії компіляції.
Між блоками try та catch не повинно бути записано жодної операції.
Синтаксис:
try
{
// частина програми для перевірки
}
catch(/*назва виключення*/)
{
//обробка виключення
return;
}
catch(/*назва виключення*/)
{
//обробка виключення
return;
}
catch // тут не вказано назви виключення
{
//обробка УСІХ виключень
return;
}
Якщо не вказано назву виключення, тоді обробляються усі виключення. Відповідний catch-блок повинен стояти останнім у списку catch-блоків. Якщо помилки відсутні, усі catch-блоки ігноруються. Продовжується виконання програми.
Список виключень приведений у документації мови C#. Таким чином, якщо є підозра, що під час роботи програми в певній частині програми може з’явитися помилка і в цьому списку є потрібне виключення, можна перехопити і обробити її. Особливо часто це буває при введенні даних, коли їхній формат недопустимий або під час виконання розрахунків. Тому, коли зупиняється виконання програми і з’являється певне повідомлення , програміст швидше знаходить місце і причину появи виключення.
Приклад.
Постановка задачі
Під час введення значень зарплати та кількості відпрацьованих днів забезпечити перехоплення та обробку виключення, коли замісто цифр вводяться інші символи.
using System;
using System.Collections.Generic;
using System.Text;
namespace exception1
{
class Program
{
static void Main(string[] args)
{
string s;
double salary;
double day_salary;
int amount_days;
try
{
Console.WriteLine("Enter salary=");
s = Console.ReadLine();
salary = Convert.ToDouble(s);
Console.WriteLine("Enter amount of days=");
s = Console.ReadLine();
amount_days = Convert.ToInt32(s);
}
catch (FormatException)
{
Console.WriteLine("Зарплата або кількість днів");
Console.WriteLine(" введені у неправильному форматі.");
return;
}
day_salary = salary/amount_days;
Console.WriteLine(" Day_salary = {0}", day_salary);
}
}
}
