Исключение внутри функции в C#
Проверку аргумента прячут внутрь функции.
Если значение не годится, функция выбрасывает
исключение, а вызывающий код в try-catch
решает, что показать:
int GetScore(Dictionary<string, int> dct, string key) {
if (!dct.ContainsKey(key)) {
throw new ArgumentException("unknown key");
}
return dct[key];
}
Dictionary<string, int> dct = new() { ["a"] = 10 };
try {
Console.WriteLine(GetScore(dct, "z"));
} catch (ArgumentException) {
Console.WriteLine("bad arg");
}
Деление с проверкой делителя часто оформляют отдельной функцией:
int SafeDiv(int a, int b) {
if (b == 0) {
throw new ArgumentException("zero divisor");
}
return a / b;
}
try {
Console.WriteLine(SafeDiv(8, 0));
} catch (ArgumentException ex) {
Console.WriteLine(ex.Message);
}
Создайте функцию Divide с двумя
целыми. При b == 0 выбросьте
new ArgumentException("zero").
Вызовите с нулевым делителем в try-catch
и выведите "fail" при ошибке.