7
Lezione XII Laboratorio di Programmazione

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

Embed Size (px)

Citation preview

Page 1: 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

Lezione XII

Laboratorio di Programmazione

Page 2: 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

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 }

Page 3: 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

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 }

Page 4: 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

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;

}

Page 5: 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

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(...) { // }

Page 6: 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

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; }

Page 7: 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

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...)