Блок catch
После try
пишут один или несколько catch с типом
исключения. Срабатывает первый подходящий
обработчик; более общий тип, например
Exception, ставят ниже конкретных.
Условный отбор задают через
when.
Синтаксис
try { }
catch (Конкретное) { }
catch (Exception) { }
Пример
Давайте поймаем DivideByZeroException
отдельным catch:
using System;
class Program
{
static void Main()
{
try
{
int res = 1 / 0;
}
catch (DivideByZeroException)
{
Console.WriteLine("zero");
}
catch (Exception)
{
Console.WriteLine("other");
}
}
}
Результат выполнения кода:
"zero"
Пример
Давайте бросим InvalidOperationException
и попадём во второй catch:
using System;
class Program
{
static void Main()
{
try
{
throw new InvalidOperationException("abcde");
}
catch (DivideByZeroException)
{
Console.WriteLine("zero");
}
catch (Exception)
{
Console.WriteLine("other");
}
}
}
Результат выполнения кода:
"other"
Пример
Давайте прочитаем сообщение в catch
с переменной исключения:
using System;
class Program
{
static void Main()
{
try
{
throw new InvalidOperationException("abcde");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
Результат выполнения кода:
"abcde"