Лістинг 4.11. Використання виключень для перевірки введення
using System;
namespace ConsoleApplicationl
{class Classl
{static void Main( )
{
string buf;
double u, i, r;
try
{
Console.WriteLine( "Введите напряжение:" );
buf = Console.ReadLine( );
u = double.Parse( buf );
Console.WriteLine( "Введите сопротивление:" );
buf = Console.ReadLine();
r = double. Parse(buf );
i = u / r;
Console.WriteLine( "Сила тока - " + i );
}
catch ( FormatException )
{
Console.WriteLine( "Неверный формат ввода!" );
}
catch // общий случай
{
Console.WriteLine( "Неопознанное исключение" );
}
}
}
}
Оператори try можуть багато разів вкладатися один в одного. Виключення, яке виникло у внутрішньому блоці try і не було перехоплене відповідним блоком catch, передається на верхній рівень, де продовжується пошук відповідного обробника. Цей процес називається розповсюдженням виключення. Розповсюдження виключень надає програмістові цікаві можливості. Наприклад, якщо на внутрішньому рівні недостатньо інформації для того, щоб провести повну обробку помилки, можна виконати часткову обробку і згенерувати виключення повторно, щоб воно було оброблене на верхньому рівні. Генерація виключення виконується за допомогою оператора throw.