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