Manejo de excepciones

Manejo de excepciones

Manejo de excepciones

Introducción

Una excepción en términos de lenguaje de programación es la indicación de un problema que ocurre durante la ejecución de un programa. Sin embargo la palabra excepción se refiere que este problema ocurre con poca frecuencia generalmente cuando existe algún dato o instrucción que no se apega al funcionamiento del programa por lo que se produce un error. El manejo de excepciones permite al usuario crear aplicaciones tolerantes a fallas y robustos (resistentes a errores) para controlar estas excepciones y que pueda seguir ejecutando el programa sin verse afectado por el problema. En lenguaje java estas excepciones pueden manejarse con las clases que extienden el paquete Throwable de manera directa o indirecta, pero existen diversos tipos de excepciones y formas para manejarlas.

Uso del manejo de excepciones

El manejo de excepciones ayuda al programador a remover el código para manejo de errores de la línea principal de ejecución, además se pude elegir entre manejar todas las excepciones, las de cierto tipo o de las de grupos relacionados, esto hace que la probabilidad de pasar por alto los errores se reduzca y a la vez hace los programas más robustos. Pero es importante utilizar un lenguaje de programación que soporte este manejo, de lo contrario el procesamiento de errores no estará incluido y hará el programa más vulnerable. Este manejo está diseñado para procesar errores que ocurren cuando se ejecuta una instrucción, algunos ejemplos son: desbordamiento aritmético, división entre cero, parámetros inválidos de método y asignación fallida en la memoria. Sin embargo no está diseñado para procesar problemas con eventos independientes al programa como son pulsar una tecla o clic al mouse. Las excepciones se dividen en verificadas y no verificadas. Es importante esta división porque el compilador implementa requerimientos de atrapar o declarar para las verificadas lo que hará que se detecten las excepciones automáticamente y de acuerdo al lenguaje de programación utilizado se utilizará un método para corregirlas. Sin embargo para las no verificadas se producirá un error indicando que deben atraparse y declararse. Por eso el programador debe pensar en los problemas que pueden ocurrir cuando se llama a un método y definir excepciones para verificarse cuando sean importantes. Las clases de excepciones pueden derivarse de una superclase común, por lo que con un manejador para atrapar objetos de la superclase, también se pueden atrapar todos los objetos de las subclases de esa clase. Pero también, se pueden atrapar atrapar a cada uno de los tipos de las subclases de manera individual si estas requieren ser procesadas diferente.

Limpieza de pila

En ocasiones cuando se hace lanza una excepción, pero no se atrapa en un enlace específico, la pila de llamadas se limpia y el programa intenta volverlo a atrapar en el siguiente bloque, esto se conoce como limpia de pila. Este proceso hace que el método en el que no se atrapó la excepción termina, todas sus variables quedan fuera del enlace y el control regresa a la instrucción que originalmente la invocó. La limpieza de pila de repetirá hasta que la excepción pueda ser atrapada porque de lo contrario se producirá un error a la hora de compilar.

Aserciones

Las aserciones ayudan a asegurar la validez del programa al atrapar los errores potenciales e identificar los posibles errores lógicos del desarrollo. Estas pueden escribirse como comentarios para apoyar a la persona que desarrolla el programa. Algunos ejemplos son: Precondiciones y pos condiciones Estas características son utilizadas por los programadores para hacer un análisis de lo esperado del programa antes y después de su ejecución. Son importantes porque gracias a ellas se pueden detectar posibles fallas en el programa y corregirlas. Las precondiciones son verdaderas cuando se invoca a un método, estas describen las características del método y las expectativas que se tienen en el estado actual del programa. Si no se cumplen las precondiciones el comportamiento del método es indefinido por lo que se lanza una excepción que esté preparada o continuar con el programa esperando el error. Las pos condiciones describen las restricciones en el entorno y cualquier efecto secundario del método. Es recomendable escribirlas para saber que esperar en un futuro si es que se hacen modificaciones.

Conclusión

El manejo de excepciones ayuda a lidiar con los errores de una aplicación por medio de la manipulación del código para hacer programas más robustos. Además existen herramientas que ayudan a manejarlas tal es el caso de los bloques tratar que encierran el código que puede lanzar una excepción y los bloques atrapar que lidian con las excepciones que surjan. También existen técnicas que el programador utiliza para conocer el posible funcionamiento del programa y detectar los errores que pueda contener.

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;

Enlaces externos

http://msdn.microsoft.com/es-es/library/ms173160(v=vs.80).aspx


Wikimedia foundation. 2010.

См. также в других словарях:

  • Manejo de excepciones — 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 ejempo, un programa puede admitir como… …   Enciclopedia Universal

  • Manejo de Conflictos — Saltar a navegación, búsqueda Por prevención y manejo de conflictos se entiende al conjunto de estrategias y actividades que procuran prevenir una escalada de tensiones y/o para transformar relaciones de confrontación en relaciones de… …   Wikipedia Español

  • Manejo de material — El manejo o movimiento de material (Figura 1) es un sistema o combinación de métodos, instalaciones, mano de obra y equipamiento para transporte, embalaje y almacenaje para corresponder a objetivos específicos (Kulwiec, 1985, p. 4). Figura 1 Mane …   Wikipedia Español

  • Manejo de conflictos — Este artículo o sección sobre política necesita ser wikificado con un formato acorde a las convenciones de estilo. Por favor, edítalo para que las cumpla. Mientras tanto, no elimines este aviso puesto el 29 de marzo de 2008. También puedes ayudar …   Wikipedia Español

  • Código de error — En programación, los códigos de error son mensajes numerados que corresponden a errores en una aplicación específica. Se usan a menudo para identificar fallos de hardware, software o una entrada de datos incorrecta del usuario, en lenguajes de… …   Wikipedia Español

  • Antipatrón de diseño — Saltar a navegación, búsqueda Un antipatrón de diseño es un patrón de diseño que invariablemente conduce a una mala solución para un problema. Al documentarse los antipatrones, además de los patrones de diseño, se dan argumentos a los diseñadores …   Wikipedia Español

  • Pila de llamadas — Estructura de la pila de llamadas. En la figura se ve una pila, creciendo de abajo hacia arriba. La subrutina DrawSquare es llamada y se crea un stack frame para ella (en azul). Luego, DrawSquare llama a la subrutina DrawLine, la cual tiene su… …   Wikipedia Español

  • RAII — Adquirir Recursos es Inicializar , a menudo referido por sus siglas en inglés RAII (de Resource Acquisition Is Initialization ), es un popular patrón de diseño en varios lenguajes de programación orientados a objetos como C++, y Ada. La técnica… …   Wikipedia Español

  • Setjmp.h — Este artículo o sección necesita ser wikificado con un formato acorde a las convenciones de estilo. Por favor, edítalo para que las cumpla. Mientras tanto, no elimines este aviso puesto el 8 de junio de 2011. También puedes ayudar wikificando… …   Wikipedia Español

  • Modula-3 — Información general Paradigma multiparadigma: imperativo, estructurado, modular Apareció en Años 1980 Diseñado por DEC y …   Wikipedia Español


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»