Несколько блоков Catch
Часть раздела Логика и управление потоком путешествия по C# на Coddy. Урок 25 из 66.
Несколько блоков catch позволяют обрабатывать разные типы исключений с помощью специального кода для каждого типа исключения.
Начни с базового блока try:
try
{
int number = int.Parse("abc");
}
Добавьте блок catch для конкретного исключения:
try
{
int number = int.Parse("abc");
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
Вы можете добавить несколько блоков catch для обработки разных исключений:
try
{
int number = int.Parse("abc");
int result = 10 / number;
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Divide By Zero Exception: " + ex.Message);
}
Будет выполнен первый подходящий блок catch. Располагайте блоки catch от наиболее конкретных к наиболее общим типам исключений.
Задание
ЛегкоСоздай метод с именем DivideNumbers, который принимает два строковых параметра:
numeratorStr: строка, представляющая числительdenominatorStr: строка, представляющая знаменатель
Метод должен:
- Попытаться преобразовать обе строки в целые числа
- Попытаться разделить числитель на знаменатель
- Вернуть результат как целое число
- Обработать FormatException, выведя "Invalid format" и вернув 0
- Обработать DivideByZeroException, выведя "Cannot divide by zero" и вернув 0
- Обработать любые другие исключения с помощью общего блока catch, который выводит "An error occurred" и возвращает 0
Попробуйте сами
using System;
public class Program
{
public static int DivideNumbers(string numeratorStr, string denominatorStr)
{
// Напишите свой код здесь
}
public static void Main(string[] args)
{
string numeratorStr = Console.ReadLine();
string denominatorStr = Console.ReadLine();
int result = DivideNumbers(numeratorStr, denominatorStr);
Console.WriteLine("Result: " + result);
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовОбъявление и инициализация 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиЗубчатые массивыОсновные операции с матрицамиПовторение — многомерные массивы4Методы управления потоком выполнения
Досрочный выходЗащитные условияОператоры перехода (goto)Break и ContinueУпрощение вложенных условных конструкций7Логические операторы: продвинутый уровень
Вычисление с коротким замыканиемУсловные логические операторыПриоритет операторовПовторение — продвинутые операторы2Продвинутое принятие решений
Множественные условияСложная логика BooleanСравнение If и SwitchВложенные конструкции SwitchПовторение — продвинутые решения5Обработка исключений
Основы Try-CatchТипы исключенийНесколько блоков CatchРабота с файламиБлок FinallyИспользование Using вместо Try-FinallyПользовательские исключенияПовторение — обработка ошибок3Улучшение циклов
Производительность цикловИтерация по сложным структурамКаждый тип циклаРефакторинг цикловПовторение — оптимизированные циклы6Обработка null
Основы ссылок на nullТипы значений, допускающие nullШаблоны проверки на nullЗащитное программированиеПовторение — безопасность при работе с nullПотренируйтесь самостоятельно: Онлайн-компилятор C#