Upload
udalrico-piccolo
View
214
Download
2
Embed Size (px)
Citation preview
Lezione XII
Laboratorio di Programmazione
EccezioniPer la gestione di operazioni che possono non andare a buon fine
il C++ mette a disposizione un sistema di gestione delle eccezioni.
try { // codice da eseguire throw exception; } catch (type exception) { // codice da eseguire in caso di eccezione }
EccezioniIl codice nel blocco try e’ eseguito normalmente. Se si verifica un errore, nel codice viene generata un’eccezione dalla parola chiave throw e un parametro. Il tipo del parametro specifica l’eccezione.Se nel blocco try e’ stato eseguito un throw, il blocco catch e’ eseguito ricevendo il parametro passato da throw.
try { // codice da eseguire throw exception; } catch (type exception) { // codice da eseguire in caso di eccezione }
EccezioniIl codice nel blocco try e’ eseguito normalmente. Se si verifica un errore, nel codice viene generata un’eccezione dalla parola chiave throw e un parametro. Il tipo del parametro specifica l’eccezione.Se nel blocco try e’ stato eseguito un throw, il blocco catch e’ eseguito ricevendo il parametro passato da throw.
{ char myarray[10];
try { for (int n=0; n<=10; n++)
{ if (n>9) throw “Accesso fuori limiti!";
myarray[n]='z'; }
}
catch (char * str)
{ cout << "Eccezione: " << str << endl; }
return 0;
}
Eccezionicatch puo’ essere overloaded e quindi gestire diversi tipi di eccezioni.
try { //
throw ***;
} catch (char * str) {} catch (int n) {}
Inoltre catch puo’ gestire tutti i tipi di eccezioni se definito: catch(...) { // }
EccezioniLa classe <exception> del C++ contiene un set di eccezioni standard.
(bad_alloc, lanciata da new , ...)
#include <iostream.h>
#include <exception>
int main ()
{ try { // programma}
catch (std::exception& e)
{ cout << "Exception: " << e.what(); }
return 0; }
Esercizi1) Aggiungere la gestione delle eccezioni alla classe razionali
2) Aggiungere la gestione delle eccezioni alla classe pila
3) Riscrivere la classe pila, sfruttando le eccezioni per controllare una allocazione dinamica della memoria (piu’ controlli standard su new...)