Menu
Coddy logo textTech

Excepciones personalizadas

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

Las excepciones personalizadas te permiten crear tipos de excepción específicos para las situaciones de error únicas de tu aplicación.

Para crear una excepción personalizada, define una clase que herede de Exception. La herencia significa que tu nueva clase adquiere automáticamente todo el comportamiento de la clase principal, en este caso, Exception, y te permite añadir o personalizar funcionalidades. La sintaxis class MyException : Exception significa que 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 integrada Exception.
: base(...): llama al constructor principal de Exception para establecer el mensaje de error.
El primer constructor proporciona un mensaje predeterminado cuando no se proporciona ninguno.
El segundo constructor acepta un mensaje personalizado para que quienes llaman 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 ejecute 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. Como una excepción no controlada detiene la ejecución inmediatamente, los casos de prueba solo necesitan verificar la ruta de retorno true: la propia excepción es el resultado observable para las entradas no válidas.

challenge icon

Desafío

Intermedio

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

  1. Un constructor predeterminado que establezca el mensaje "Temperature is not valid."
  2. Un constructor que acepte un mensaje personalizado.

Después, implementa un método llamado checkTemperature que:

  • Reciba un parámetro entero que represente una temperatura en Celsius
  • Lance una InvalidTemperatureException con el mensaje "Temperature below absolute zero!" si la temperatura es menor que -273
  • Devuelva true si la temperatura es válida

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

Practica por tu cuenta: Compilador de C# online