PDF de programación - Curso de programación de C/C++ - Excepciones

Imágen de pdf Curso de programación de C/C++ - Excepciones

Curso de programación de C/C++ - Excepcionesgráfica de visualizaciones

Publicado el 9 de Mayo del 2017
715 visualizaciones desde el 9 de Mayo del 2017
26,8 KB
2 paginas
Creado hace 12a (15/07/2011)
Excepciones

Introducción

• La idea es separar el funcionamiento normal
de un programa de la gestión de los errores.

• Si algo va mal:

– División por cero.
– No hay más memoria.
– No existe el fichero deseado.

• Se lanza una excepción que HAY que tratar.

Curso de programación de C/C++

50

Curso de programación de C/C++

51

Sintaxis

Ejemplo

• Se apoya en

– try {...}: Abarca el programa normal. Si todo va

bien será lo ÚNICO que ejecute.

– throw exception: Cuando algo va mal nos

permite lanzar una excepción para indicarlo.

– catch (class exception) {}: Nos permite tratar un
tipo de excepción. Habrá un catch por cada tipo
posible.

try {

// Codigo normal
...
if (algo mal) throw excep;
// Si fue mal esto no ejecutaria
...

}
catch (int i) {...} // Excep. enteras
catch (double d) { ...} // Excep. reales
catch (my_exception) {...}//”mis” excep.
catch (...) {...} // Las “demás”

Curso de programación de C/C++

52

Curso de programación de C/C++

53

Paso de Excepciones entre

funciones (I)

• Si una función no captura una excepción está
va a la función que la invocó, que saltará al
“catch” correspondiente

• Si ninguna la captura se produce una

Abnormal program termination

• Esto aconseja poner, tras los múltiples catch
que nos interesan, siempre uno “por defecto”
catch (...) { cout << “excepcion inexperada”; }
//Admite todas las excepciones

Paso de Excepciones entre

funciones (II)

• Para limitar las excepciones que una función
puede lanzar se puede indicar explicitamente
cuales son las “autorizadas”:

void fun1 (int i) throw (int, double) {...}
Void fun2 (int i) throw () {...}
• Una función, dentro del catch, puede lanzar

otra excepción (p.e. si no sabe tratar la 1ª)

• E incluso relanzar la misma: throw;

Curso de programación de C/C++

54

Curso de programación de C/C++

55

1

Definir excepciones

Definir excepciones

• Hay algunas predefinidas: bad_alloc
try { p = new int[1000]; }
catch (bad_alloc b) { cout <<“Memory Failure”;}
• Incluso podemos definir nuestras Excep.
class mi_excepcion{char *mensaje; ...};
try {mi_excepcion excep;

...
Trow excep;}

catch (mi_excepcion e)

{cout << e.mensaje; ...};

• Es mejor que extienda la clase

“exception”
{...};

class mi_excepcion: public exception

• Tiene constructores, destructores,

what, operador =

Curso de programación de C/C++

56

Curso de programación de C/C++

57

Aserciones (I)

Aserciones (II)

• Similar idea a las excepciones, pero detectan fallos

del programador.

• Toda función necesita que se cumplan unas

premisas a la entrada (precondiciones) y deja el
estado en un modo conocido (postcondiciones)

• Si no se cumplen algo ha ido mal
• Se pueden desactivar para no penalizar las

ejecuciones “normales”:
g++ -DNDEBUG …

• No están pensadas para ser tratadas (generan un

Assertion failed)

• No se tratan porque al ser errores de programación no

deberían darse y si se dan no está claro como recuperarse

assert(4 < 3);
• Genera:
Assertion failed: 4 < 3, file assert.cpp,line 8
Abort

Curso de programación de C/C++

58

Curso de programación de C/C++

59

2
  • Links de descarga
http://lwp-l.com/pdf3434

Comentarios de: Curso de programación de C/C++ - Excepciones (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad