sábado, 6 de agosto de 2011

Exceptions in C++ - Cómo manejar excepciones - Primera Parte.

Información General
Las excepciones proporcionan una forma de tener el control sobre los "sucesos extraños", errores u horrores en tiempo de ejecución.

La forma en que C++ hace esto, es por medio de pasar el "mando" a funciones especiales llamadas manejadores o "handlers" en Inglés.

Para que esto suceda, debemos encerrar una porción de nuestro código, - o todo :) - en el bloque de código llamado try o intentar, en español, pero no lo escriban así en su código fuente... xD.

En el momento en que ocurre un error o anomalía en el código que colocamos dentro del try, salta una excepción que como ya dije, pasa el control a los manejadores, que se encargarán de hacer la tarea que nosotros le hayamos asignado.

De lo contrario, los handlers o manejadores, son ignorados.

La excepción salta, si utilizamos la palabra clave throw dentro del bloque try.


Una expresión throw acepta un solo parámetro, la cual pasa como argumento a los manejadores. (handlers)

Los manejadores pueden ser creados con la instrucción catch, la que debe ir inmediatamente después de la instrucción try y debe contener como mínimo un  parámetro el cual es comparado con el tipo de los manejadores y capturado por el cual tiene el mismo tipo, valga la redundancia.


Si queremos que nuestro manejador se atipado, o sea sin ningún tipo por defecto, debemos colocar ... (tres puntos suspensivos). De esta forma, ocurra lo que ocurra, nuestro manejador lo capturará.

Ejemplos:

try {
  // Aquí va tu código
}
catch (int param) {
    cout << "excepción de int";
}
catch (char param) {
    cout << "excepción de char";
}
catch (...) {
    cout << "excepción estandar";
}

Opinion Personal:

Como menciona el artículo original, es la forma natural que tiene este lenguaje para controlar

los eventos inesperados, que puedan surgir en nuestros programas.

Por supuesto, lo recomiendo ampliamente, aunque no hay que abusar de su uso, como todo.

Más adelante voy a traducir más del artículo original.

Fuente: cPlusPlus.com

No hay comentarios: