Выражение 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"