Múltiples bloques Catch
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 te permiten manejar distintos 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 añadir varios bloques catch para gestionar distintas 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);
}
Se ejecutará el primer bloque catch coincidente. Ordena los bloques catch del tipo de excepción más específico al más general.
Desafío
FácilCrea un método llamado DivideNumbers que acepte dos parámetros de tipo string:
numeratorStr: un string que representa el numeradordenominatorStr: un string que representa el denominador
El método debe:
- Intentar analizar ambas cadenas como enteros
- Intentar dividir el numerador entre el denominador
- Devolver el resultado como un entero
- Manejar
FormatExceptionimprimiendo "Invalid format" y devolviendo 0 - Manejar
DivideByZeroExceptionimprimiendo "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
1Arrays multidimensionales
Conceptos básicos de arrays 2DDeclaración e inicialización de arrays 2DAcceso a elementos de arrays 2DBucles anidados con arrays 2DArrays irregularesOperaciones comunes con matricesRepaso: arrays multidimensionales4Técnicas de control de flujo
Retornos anticipadosCláusulas de guardaSentencias de salto (goto)Break y ContinueAplanar condicionales anidados7Operadores lógicos avanzados
Evaluación de cortocircuitoOperadores lógicos condicionalesPrecedencia de operadoresRepaso: operadores avanzados2Toma de decisiones avanzada
Múltiples condicionesLógica booleana complejaComparación entre If y SwitchSentencias Switch anidadasRepaso: decisiones avanzadas5Manejo de excepciones
Fundamentos de Try-CatchTipos de excepcionesMúltiples bloques CatchTrabajo con archivosBloque FinallyUso de Using frente a Try-FinallyExcepciones personalizadasRepaso: manejo de errores3Mejoras de bucles
Rendimiento de buclesIteración de estructuras complejasCada tipo de bucleRefactorización de buclesRepaso: bucles optimizados6Manejo de valores nulos
Conceptos básicos de referencias nulasTipos de valor anulablesPatrones de comprobación de valores nulosProgramación defensivaRepaso: seguridad frente a valores nulosPractica por tu cuenta: Compilador de C# online