Try-Catch Basics
Parte de la sección Lógica y Flujo del Journey de C# de Coddy — lección 23 de 66.
El manejo de excepciones en C# permite gestionar errores en tiempo de ejecución de forma elegante. El bloque try-catch es la forma fundamental de manejar excepciones.
Crea un bloque try-catch básico:
try
{
// Código que podría lanzar una excepción (error)
int result = 10 / 0; // Esto lanzará una DivideByZeroException
}
catch (Exception ex)
{
// Manejar la excepción
Console.WriteLine("An error occurred: " + ex.Message);
}Después de ejecutar el código anterior, en lugar de que tu programa se bloquee, verás:
An error occurred: Attempted to divide by zero.Puedes continuar ejecutando código después del bloque catch:
try
{
int result = 10 / 0;
Console.WriteLine("This won't execute");
}
catch (Exception ex)
{
Console.WriteLine("Caught an error: " + ex.Message);
}
Console.WriteLine("Program continues running");Desafío
FácilCrea un método llamado DivideNumbers que tome dos enteros como parámetros:
numerator- El número a dividirdenominator- El número por el que dividir
El método debe:
- Intentar dividir el numerador por el denominador
- Devolver el resultado si es exitoso
- Capturar cualquier DivideByZeroException e imprimir exactamente: "Cannot divide by zero!"
- Devolver 0 si ocurre una excepción
Hoja de referencia
El manejo de excepciones en C# utiliza bloques try-catch para gestionar errores en tiempo de ejecución de manera elegante:
try
{
// Code that might throw an exception
int result = 10 / 0;
}
catch (Exception ex)
{
// Handle the exception
Console.WriteLine("An error occurred: " + ex.Message);
}La ejecución del código continúa después del bloque catch, evitando que el programa se bloquee. Puedes capturar tipos de excepciones específicas como DivideByZeroException para un manejo de errores más dirigido.
Pruébalo tú mismo
using System;
class Program {
public static int DivideNumbers(int numerator, int denominator) {
// Escribe tu código aquí
}
static void Main(string[] args) {
int numerator = int.Parse(Console.ReadLine());
int denominator = int.Parse(Console.ReadLine());
int result = DivideNumbers(numerator, denominator);
Console.WriteLine(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