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.
Desafío
IntermedioCrea una clase de excepción personalizada llamada InvalidTemperatureException que hereda de Exception. Debe tener:
- Un constructor predeterminado que establece un mensaje "Temperature is not valid."
- 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
InvalidTemperatureExceptioncon 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í
}
}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