Multiple Catch Blocks
Parte de la sección Lógica y Flujo del Journey de C# de Coddy — lección 25 de 66.
Múltiples bloques catch le 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");
}
Agrega 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 añadir múltiples bloques catch para manejar 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 que coincida se ejecutará. Ordena tus bloques catch desde los tipos de excepción más específicos a los más generales.
Desafío
FácilCrea un método llamado DivideNumbers que reciba dos parámetros de tipo string:
numeratorStr: una cadena que representa el numeradordenominatorStr: una cadena que representa el denominador
El método debe:
- Intentar convertir ambas cadenas a enteros
- Intentar dividir el numerador por el denominador
- Devolver el resultado como un entero
- Manejar FormatException imprimiendo "Invalid format" y devolviendo 0
- Manejar DivideByZeroException imprimiendo "Cannot divide by zero" y devolviendo 0
- Manejar cualquier otra excepción con un bloque catch general que imprima "An error occurred" y devuelva 0
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);
}
}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
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety