Manejo de excepciones
De Wikipedia, la enciclopedia libre
El manejo de excepciones es una estructura de control de los lenguajes de programación diseñada para manejar condiciones anormales que pueden ser tratadas por el mismo programa que se desarrolla.
Por ejemplo, un programa puede admitir cierto número de errores en el formato de los datos y continuar su proceso para producir el mejor resultado posible en lugar de producir una salida aparatosa llena de mensajes de error probablemente incomprensibles para el usuario. Muchas veces la acción asociada a una excepción es simplemente producir un mensaje informativo y terminar, otras veces, es sólo indicación de la necesidad de un cambio en la estrategia de resolución del problema.
Algunos lenguajes de programación, por ejemplo Lisp, Ada, C++, C#, Delphi, Objective C, Java, PHP , Python ,Eiffel y Ocaml incluyen soporte para el manejo de excepciones. En esos lenguajes, al producirse una excepción se desciende en la pila de ejecución hasta encontrar un manejador para la excepción, el cual toma el control en ese momento.
Ejemplo de manejo de excepción en Java:
import java.io.IOException; // ... public static void main(String[] args) { try { // Se ejecuta algo que puede producir una excepción } catch (IOException e) { // manejo de una excepción de entrada/salida } catch (Exception e) { // manejo de una excepción cualquiera } finally { // código a ejecutar haya o no excepción } }
Ejemplo de manejo de excepción en Delphi:
procedure TForm1.Button1Click(Sender : TObject); begin try try a := b / c; finally // Este código siempre se ejecuta, independientemente de si ocurre o no una excepción. end; except on e:EZeroDivide do // Manejo de la excepción División por cero. on e:Exception do // Manejo de una excepción "genérica". end; end;
Ejemplo de manejo de excepción en Python:
try: result = x / y except ZeroDivisionError: print "division by zero!" else: print "result is", result finally: print "executing finally clause"
Ejemplo de manejo de excepcion en Ada
type T_Matriz is array (Positive range <>, Positive range <>) of Integer; procedure Rellenar_Matriz (Matriz : in T_Matriz; K : in Integer; Q : in Integer); is begin begin Matriz (K,Q) := 3; exception when Constraint_Error => Put_Line ("Las posiciones se salen del rango de la matriz"); end; end Rellenar_Matriz;