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

Выражение throw

Выражение throw создаёт исключение и сразу прерывает вычисление текущего выражения. Его ставят там, где синтаксис требует значение, но при ошибке нужно выйти через исключение - часто после ?: вместо запасной ветки.

Синтаксис

throw new ТипИсключения("сообщение");

Пример

Давайте вернём строку, если число положительное:

using System; class Program { static string PickLabel(int num) { return num > 0 ? "positive" : throw new Exception("bad"); } static void Main() { Console.WriteLine(PickLabel(5)); } }

Результат выполнения кода:

"positive"

Пример

Давайте поймаем исключение из ветки throw:

using System; class Program { static string PickLabel(int num) { return num > 0 ? "positive" : throw new Exception("bad"); } static void Main() { try { Console.WriteLine(PickLabel(-1)); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }

Результат выполнения кода:

"bad"

Пример

Давайте проверим длину строки через тернарный оператор:

using System; class Program { static int RequireLength(string str) { return str.Length > 0 ? str.Length : throw new Exception("bad"); } static void Main() { Console.WriteLine(RequireLength("abcde")); } }

Результат выполнения кода:

5

Пример

Давайте выведем сообщение при пустой строке:

using System; class Program { static int RequireLength(string str) { return str.Length > 0 ? str.Length : throw new Exception("bad"); } static void Main() { try { Console.WriteLine(RequireLength("")); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }

Результат выполнения кода:

"bad"

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

  • тернарный оператор ?:,
    в котором часто ставят throw
  • оператор return,
    который завершает метод с результатом
  • оператор if,
    перед веткой с классическим throw
  • оператор nameof,
    которым подписывают имя в сообщении об ошибке
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить