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 = 10 / 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, который принимает два строковых параметра:

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

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

  1. Попробовать преобразовать обе строки в целые числа
  2. Попробовать разделить числитель на знаменатель
  3. Вернуть результат в виде целого числа
  4. Обработать FormatException, выводя "Invalid format" и возвращая 0
  5. Обработать DivideByZeroException, выводя "Cannot divide by zero" и возвращая 0
  6. Обработать любые другие исключения с помощью общего блока 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);
    }
}
quiz iconПроверьте себя

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

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