Menu
Coddy logo textTech

Multiple Catch Blocks

Parte de la sección Lógica y Flujo del Journey de C# de Coddy — lección 25 de 66.

Los bloques catch múltiples permiten manejar diferentes tipos de excepciones con código específico para cada tipo de excepción.

Comienza con un bloque try básico:

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

Añade un bloque catch para una excepción específica:

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

Puedes agregar múltiples bloques catch para manejar diferentes excepciones:

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

El primer bloque catch coincidente se ejecutará. Ordena tus bloques catch desde los tipos de excepción más específicos hasta los más generales.

challenge icon

Desafío

Fácil

Crea un método llamado DivideNumbers que tome dos parámetros string:

  • numeratorStr: una cadena que representa el numerador
  • denominatorStr: una cadena que representa el denominador

El método debe:

  1. Intentar convertir ambas cadenas a enteros
  2. Intentar dividir el numerador por el denominador
  3. Devolver el resultado como un entero
  4. Manejar FormatException imprimiendo "Invalid format" y devolviendo 0
  5. Manejar DivideByZeroException imprimiendo "Cannot divide by zero" y devolviendo 0
  6. Manejar cualquier otra excepción con un bloque catch general que imprima "An error occurred" y devuelva 0

Hoja de referencia

Los bloques catch múltiples permiten manejar diferentes tipos de excepciones con código específico para cada tipo de excepción.

try-catch básico con excepción específica:

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

Bloques catch múltiples para diferentes excepciones:

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

El primer bloque catch coincidente se ejecutará. Ordena los bloques catch desde los tipos de excepciones más específicos hasta los más generales.

Pruébalo tú mismo

using System;

public class Program
{
    public static int DivideNumbers(string numeratorStr, string denominatorStr)
    {
        // Escribe tu código aquí
    }
    
    public static void Main(string[] args)
    {
        string numeratorStr = Console.ReadLine();
        string denominatorStr = Console.ReadLine();
        
        int result = DivideNumbers(numeratorStr, denominatorStr);
        Console.WriteLine("Result: " + result);
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo