Оператор throw
Запись throw new ... создаёт объект
исключения и начинает поиск
catch.
Внутри catch голый throw;
пробрасывает текущее исключение дальше,
сохраняя стек. Код в
try
после throw не выполняется.
Синтаксис
throw new InvalidOperationException("abcde");
catch (Exception)
{
throw;
}
Пример
Давайте бросим InvalidOperationException
и поймаем его:
using System;
class Program
{
static void Main()
{
try
{
throw new InvalidOperationException("abcde");
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.Message);
}
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте повторно бросим исключение через
throw; и поймаем снаружи:
using System;
class Program
{
static void Main()
{
try
{
try
{
throw new InvalidOperationException("abcde");
}
catch
{
throw;
}
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.Message);
}
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте бросим исключение из метода и
обработаем в Main:
using System;
class Program
{
static void Run()
{
throw new InvalidOperationException("abcde");
}
static void Main()
{
try
{
Run();
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.Message);
}
}
}
Результат выполнения кода:
"abcde"