Menu
Coddy logo textTech

Multiple Catch Blocks

Parte da seção Lógica & Fluxo do Journey de C# da Coddy — lição 25 de 66.

Múltiplos blocos catch permitem que você trate diferentes tipos de exceções com código específico para cada tipo de exceção.

Comece com um bloco try básico:

try
{
    int number = int.Parse("abc");
}

Adicione um bloco catch para uma exceção específica:

try
{
    int number = int.Parse("abc");
}
catch (FormatException ex)
{
    Console.WriteLine("Format Exception: " + ex.Message);
}

Você pode adicionar múltiplos blocos catch para lidar com diferentes exceções:

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);
}

O primeiro bloco catch correspondente será executado. Ordene seus blocos catch do mais específico ao mais geral tipos de exceção.

challenge icon

Desafio

Fácil

Crie um método chamado DivideNumbers que recebe dois parâmetros string:

  • numeratorStr: uma string representando o numerador
  • denominatorStr: uma string representando o denominador

O método deve:

  1. Tentar converter ambas as strings para inteiros
  2. Tentar dividir o numerador pelo denominador
  3. Retornar o resultado como um inteiro
  4. Tratar FormatException imprimindo "Invalid format" e retornando 0
  5. Tratar DivideByZeroException imprimindo "Cannot divide by zero" e retornando 0
  6. Tratar quaisquer outras exceções com um bloco catch geral que imprime "An error occurred" e retorna 0

Folha de consulta

Blocos catch múltiplos permitem que você trate diferentes tipos de exceções com código específico para cada tipo de exceção.

Try-catch básico com exceção específica:

try
{
    int number = int.Parse("abc");
}
catch (FormatException ex)
{
    Console.WriteLine("Format Exception: " + ex.Message);
}

Blocos catch múltiplos para diferentes exceções:

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);
}

O primeiro bloco catch correspondente será executado. Ordene os blocos catch do mais específico para o mais geral em tipos de exceção.

Experimente você mesmo

using System;

public class Program
{
    public static int DivideNumbers(string numeratorStr, string denominatorStr)
    {
        // Escreva seu código aqui
    }
    
    public static void Main(string[] args)
    {
        string numeratorStr = Console.ReadLine();
        string denominatorStr = Console.ReadLine();
        
        int result = DivideNumbers(numeratorStr, denominatorStr);
        Console.WriteLine("Result: " + result);
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo