Lezione XII Laboratorio di Programmazione
Eccezioni Per 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 }
Eccezioni Il codice nel blocco try e eseguito normalmente. Se si verifica un errore, nel codice viene generata uneccezione dalla parola chiave throw e un parametro. Il tipo del parametro specifica leccezione. 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 }
Eccezioni Il codice nel blocco try e eseguito normalmente. Se si verifica un errore, nel codice viene generata uneccezione dalla parola chiave throw e un parametro. Il tipo del parametro specifica leccezione. 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 del C++ contiene un set di eccezioni standard. (bad_alloc, lanciata da new,...) #include int main () { try { // programma} catch (std::exception& e) { cout << "Exception: " << e.what(); } return 0; }
Esercizi 1)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...)