Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
932 of 1492 menu
◀ ▶

Оператор 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"

Смотрите также

  • блок catch,
    который принимает throw
  • блок try,
    где ловят брошенное исключение
  • фильтр when,
    который отбирает catch
  • блок finally,
    который выполняется после throw
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить