Menu
Coddy logo textTech

Custom Exceptions

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

Las excepciones personalizadas permiten crear tipos de excepciones específicos para los escenarios de error únicos de su aplicación.

Para crear una excepción personalizada, define una clase que herede de Exception. La herencia significa que tu nueva clase obtiene automáticamente todo el comportamiento de la clase padre — en este caso, Exception — mientras te permite agregar o personalizar funcionalidad. La sintaxis class MyException : Exception significa MyException extiende Exception.

public class InvalidAgeException : Exception
{
    public InvalidAgeException() : base("Age is not valid.")
    {
    }
    
    public InvalidAgeException(string message) : base(message)
    {
    }
}

: Exception — hereda de la clase Exception integrada.
: base(...) — llama al constructor de la clase padre Exception para establecer el mensaje de error.
El primer constructor proporciona un mensaje predeterminado cuando no se suministra ninguno.
El segundo constructor acepta un mensaje personalizado para que los llamadores puedan describir el error en detalle.

Ahora puedes lanzar tu excepción personalizada cuando sea necesario:

int age = -5;
if (age < 0)
{
    throw new InvalidAgeException("Age cannot be negative.");
}

Cuando este código se ejecuta con una edad negativa, lanzará tu excepción personalizada con el mensaje "Age cannot be negative."

Nota: En los ejercicios de esta lección, las funciones de validación devuelven true cuando la entrada es válida y lanzan una excepción personalizada cuando no lo es. Debido a que una excepción no manejada detiene la ejecución inmediatamente, los casos de prueba solo necesitan verificar la ruta de retorno true — la excepción misma es el resultado observable para entradas inválidas.

challenge icon

Desafío

Intermedio

Crea una clase de excepción personalizada llamada InvalidTemperatureException que hereda de Exception. Debe tener:

  1. Un constructor predeterminado que establece un mensaje "Temperature is not valid."
  2. Un constructor que acepta un mensaje personalizado.

Luego implementa un método llamado checkTemperature que:

  • Toma un parámetro entero que representa una temperatura en Celsius
  • Lanza una InvalidTemperatureException con el mensaje "Temperature below absolute zero!" si la temperatura es menor que -273
  • Devuelve true si la temperatura es válida

Hoja de referencia

Para crear una excepción personalizada, define una clase que herede de Exception:

public class InvalidAgeException : Exception
{
    public InvalidAgeException() : base("Age is not valid.")
    {
    }
    
    public InvalidAgeException(string message) : base(message)
    {
    }
}

Lanza tu excepción personalizada cuando sea necesario:

int age = -5;
if (age < 0)
{
    throw new InvalidAgeException("Age cannot be negative.");
}

Pruébalo tú mismo

using System;

class CheckTemperature
{
    // Crea tu clase de excepción personalizada aquí
    
    public static bool checkTemperature(int celsius)
    {
        // Escribe tu código aquí
    }
    
}
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