Las excepciones en Ada permiten manejar errores en tiempo de ejecución, brindando un control detallado para gestionar situaciones inesperadas sin interrumpir el flujo del programa. Con el uso adecuado de excepciones en Ada, se puede capturar, diagnosticar y responder a fallos que podrían comprometer la ejecución del software.
En Ada, las excepciones son una forma de manejar errores o condiciones inusuales durante la ejecución del programa. Utilizando bloques de código específicos para capturarlas y procesarlas, es posible gestionar errores como cálculos inválidos, problemas de entrada/salida, y errores personalizados. Ada ofrece varias excepciones predefinidas y también permite crear excepciones personalizadas para necesidades específicas.
Para manejar excepciones en Ada, se utiliza el bloque exception
al final de una secuencia de instrucciones. La estructura básica es la siguiente:
begin
-- Código principal
exception
when Nombre_Excepcion =>
-- Código para manejar la excepción
end;
Este bloque permite capturar y manejar excepciones específicas o generales, asegurando una respuesta controlada al error.
Ada incluye varias excepciones predefinidas para los errores más comunes, como:
Constraint_Error
: cuando se viola una restricción de tipo, como al desbordar un valor numérico.
Program_Error
: para errores de lógica, como llamadas a subprogramas que no cumplen condiciones previas.
Storage_Error
: cuando hay falta de memoria.
Tasking_Error
: errores relacionados con la concurrencia en tareas.
A continuación, se presentan ejemplos de cómo capturar y gestionar excepciones en Ada.
Constraint_Error
Este ejemplo captura un error de restricción cuando ocurre una división por cero:
procedure Division_Segura is
A, B : Integer := 0;
begin
A := 10;
B := 0;
Put_Line("Resultado: " & Integer'Image(A / B));
exception
when Constraint_Error =>
Put_Line("Error: División por cero no permitida.");
end Division_Segura;
En Ada, se pueden definir excepciones específicas para necesidades particulares del programa:
procedure Ejemplo_Personalizado is
Excepcion_Personalizada : exception;
begin
raise Excepcion_Personalizada;
exception
when Excepcion_Personalizada =>
Put_Line("Se ha capturado una excepción personalizada.");
end Ejemplo_Personalizado;
En este caso, se define y captura una excepción personalizada llamada Excepcion_Personalizada
.
Para obtener más información sobre el manejo de excepciones en Ada, puedes consultar la documentación oficial de AdaCore.
Jorge García
Fullstack developer