70 likes | 154 Views
Laboratorio di Programmazione. Lezione XII. Per la gestione di operazioni che possono non andare a buon fine il C++ mette a disposizione un sistema di gestione delle eccezioni. Eccezioni. try { // codice da eseguire throw exception ; } catch ( type exception )
E N D
Laboratorio di Programmazione Lezione XII
Per la gestione di operazioni che possono non andare a buon fine il C++ mette a disposizione un sistema di gestione delle eccezioni. Eccezioni try { // codice da eseguire throw exception; } catch (type exception) { // codice da eseguire in caso di eccezione }
Il 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. Eccezioni try { // codice da eseguire throw exception; } catch (type exception) { // codice da eseguire in caso di eccezione }
Il 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; } Eccezioni
catch 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(...) { // } Eccezioni
La 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; } Eccezioni
Aggiungere la gestione delle eccezioni alla classe razionali • 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...) Esercizi