Menu
Coddy logo textTech

Multiple Catch Blocks

Часть раздела Логика и управление потоком путешествия по 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 = a10 / number;
}
catch (FormatException ex)
{
    Console.WriteLine("Format Exception: " + ex.Message);
}
catch (DivideByZeroException ex)
{
    Console.WriteLine("Divide By Zero Exception: " + ex.Message);
}

Первый подходящий блок catch будет выполнен. Располагайте свои блоки catch от наиболее специфичных к наиболее общим типам исключений.

challenge icon

Задание

Легко

Создайте метод с именем DivideNumbers, который принимает два параметра типа string:

  • numeratorStr: строка, представляющая числитель
  • denominatorStr: строка, представляющая знаменатель

Метод должен:

  1. Попробовать разобрать обе строки в целые числа
  2. Попробовать разделить числитель на знаменатель
  3. Вернуть результат как целое число
  4. Обработать FormatException, выведя "Invalid format" и вернув 0
  5. Обработать DivideByZeroException, выведя "Cannot divide by zero" и вернув 0
  6. Обработать любые другие исключения с помощью общего блока catch, который выводит "An error occurred" и возвращает 0

Шпаргалка

Множественные блоки catch позволяют обрабатывать разные типы исключений с помощью специфического кода для каждого типа исключения.

Базовый try-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 от наиболее специфических к наиболее общим типам исключений.

Попробуйте сами

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);
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком