Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

Java base V: La gestione delle Eccezioni
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A2 Java: le basi del linguaggio.
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
ITIS LATTANZIO Unità Didattica Materia Informatica Funzioni in C++
Universita di Camerino
Universita di Camerino
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
IL COMPUTER Il computer, o elaboratore, è un insieme di dispositivi (meccanici, elettrici,ottici) predisposti per accettare dati dallesterno, elaborarli.
Il Sistema Operativo.
LIP: 4 Aprile 2008 ECCEZIONI. Eccezioni Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
LIP: 19 Aprile Contenuto Soluzione Compitino Tipo di dato MultiSet, estensione con sottoclasse.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Eccezioni Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA Uff
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione 1, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a.2009/2010 Prof.ssa Chiara Petrioli.
Laboratorio di Linguaggi lezione IX: Dentro le Librerie Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) JAVA: funzione di output a video Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Ottimizzazione Combinatoria
AA 2005/06 Informatica Programmazione M.A. Alberti-L. Capra 1 Le eccezioni in Java Programmazione Corso di laurea in Informatica.
Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 1 Estensione di classi: il Contratto INTERFACCIA E REALIZZAZIONE Che cosa realizza una.
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Software di base Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei.
AA2003/04 © M.A. Alberti Programmazione Eccezioni 1 Le eccezioni in Java Programmazione Corso di laurea in Informatica.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Eccezioni.
Concetti di informatica e fondamenti di Java, 4 ed.Apogeo ©2007 Capitolo 11 Ingresso/uscita e gestione delle eccezioni Cay S. Horstmann Concetti di informatica.
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.
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori. Lapproccio classico consiste nellinse- rire controlli.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
ITIS LATTANZIO Unità Didattica Materia Informatica Funzioni in C++
Gestione degli errori, delegates,eventi 1. Eccezione – Situazione anomala che potrebbe avvenire durante lesecuzione del programma – try{…}catch(…){…}finally{…}
Modulo 1 - Hardware u.d. 3 (syllabus – 1.3.5)
PERCORSO DI FORMAZIONE UTILIZZO DEL COMPUTER 1° livello
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
Conversione da base 10 a base X (Utilizzo della pila)
Le eccezioni F. Bombi 01/11/ Errori e situazioni impreviste situazioni eccezionali In un programma situazioni eccezionali possono.
I nomi in Java F. Bombi 18 novembre novembre 2003.
1.1 Sistemi di elaborazione
Astrazione procedurale ed eccezioni
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Eccezioni Metodi parziali Eccezioni: Usi e Metodi parziali Eccezioni: rimuovere i requires Eccezioni: rimuovere i requires Eccezioni: definizione, sollevamento,
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 21 Maggio 2014.
Gestione dei dispositivi di I/O:
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Introduzione Cos’è un sistema operativo ?. Hardware Sistema Operativo Applicazioni È il livello di SW con cui interagisce l’utente e comprende programmi.
10/12/2004Laboratorio di Programmazione - Luca Tesei1 Gestione delle eccezioni.
1 Astrazione procedurale ed Eccezioni. 2 Procedure stand alone 4 indipendenti da specifici oggetti 4 come si realizzano in Java –metodi statici definiti.
LIP: 22 Marzo 2005 Eccezioni. Eccezioni-Richiami Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
Copyright © Istituto Italiano Edizioni Atlas
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
Come faccio a gestire la bibliografia?. La bibliografia Ogni studio, deve essere corredato da una bibliografia. Ogni docente, corso di laurea, Dipartimento.
Eccezioni in Java. Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel linguaggio allo scopo.
Transcript della presentazione:

Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria Informatica, Gestionale e dellAutomazione

Lezione 8 Gestione delle eccezioni

Fallimenti software Un sistema software può non essere in grado di compiere il suo dovere A causa di errori nella sua implementazione Per limpossibilità di ottenere risorse esterne di cui ha bisogno Non si può rimediare agli errori di programmazione al momento dellesecuzione, salvo cercare di fornire spiegazioni adeguate allutente.

Fallimenti dovuti a cause esterne Un sistema software può avere bisogno di risorse da Hardware Sistema operativo File system Rete Database Utente È possibile che tali risorse non siano disponibili o non siano adeguate

Anomalie ed eccezioni Le eccezioni sono delle anomalie rilevabili al momento dellesecuzione Divisione per 0 Accesso ad un elemento dellarray oltre i suoi limiti Esaurimento della memoria Dato ricevuto in input di un tipo non atteso Quando si verifica un evento eccezionale, la parte di programma che la rileva la può segnalare sollevando (lanciando) uneccezione

Gestione delle eccezioni La gestione delle eccezioni è un meccanismo tramite il quale una parte di un programma può segnalare un problema che verrà gestito altrove In una parte di un programma si verifica un problema che non è in grado di risolvere In unaltra parte del programma si sa come gestire il problema Tramite la gestione delle eccezioni si trasferisce il controllo della gestione degli eventi eccezionali Non è però un meccanismo di controllo come gli altri

Gestione delle eccezioni Espressione throw Segnala la presenza di unanomalia che non si è in grado di gestire localmente Lespressione che segue la parola chiave throw è il tipo dellespressione lanciata Blocco try Definisce un campo dazione locale e racchiude tutte le istruzioni che possono lanciare eccezioni Un blocco try termina con una o più clausole catch che catturano e gestiscono le eccezioni Classi exception Passano informazioni sullerrore da dove viene generato a dove viene gestito

Lancio di eccezioni Uneccezione si lancia con unespressione throw Parola chiave throw seguita da unespressione Alcune eccezioni, ad esempio runtime_exception, sono definite dalla libreria standard in stdexcept Generalmente loperando è un oggetto che rappresenta leccezione È possibile che venga lanciata unespressione anche dal blocco catch In questo caso può essere gestita solo da un blocco try più esterno Uneccezione non è una richiesta di terminazione di un programma Ma uneccezione non gestita causa la terminazione del programma Un throw senza argomenti causa la terminazione immediata del programma Salvo il caso di rilancio di uneccezione

Esempio: lancio di eccezione Razionale::Razionale(int num, int den) { n = num; if (den == 0) throw new runtime_error("il denominatore non può essere 0"); d = den; }

Blocco try try { // codice che potrebbe lanciare eccezioni // es. throw exception; } catch(E1 ex) { // codice che gestisce le eccezioni di tipo E1 } catch(E2 ex) { // codice che gestisce le eccezioni di tipo E2 }

Esempio: cattura di uneccezione con try/catch int main() { try { Razionale r(2, 0); // … } catch(const runtime_error* e) { cerr what() << endl; } return 0; }

Esempio: blocco try di funzione int main(int argc, char *argv[]) try { Razionale r(2, 0); return 0; } catch(const runtime_error* e) { cerr what() << endl; system("PAUSE"); return -1; } Lintero corpo della funzione è contenuto nel blocco try Separazione più netta tra il codice che implementa lelaborazione normale e quello che supporta la gestione delle eccezioni

Cattura di uneccezione I gestori delle eccezioni sono contenuti nei blocchi catch catch (tipoEccezione eccezione) { //… } Cattura le eccezioni il cui tipo corrisponde a tipoEccezione catch(…) Cattura tutte le eccezioni Non conosciamo il tipo delleccezione catturata Non ha parametri, non possiamo referenziare loggetto che rappresenta leccezione

Cattura di uneccezione I catch sono esaminati uno dopo laltro nellordine in cui sono scritti sovraccarico dei catch Un blocco catch corrisponde alloggetto lanciato se Sono dello stesso tipo (corrispondenza esatta) Il parametro è una classe base public delloggetto lanciato Il catch è il catch(…) Gli oggetti const lanciati corrispondono solo a parametri const

Risollevare uneccezione Quando un gestore di uneccezione non è in grado di elaborarla, può rilanciare di nuovo leccezione throw senza argomenti un throw senza argomenti al di fuori di un blocco catch causa la terminazione immediata del programma Uneccezione risollevata può essere ricatturata da un blocco try più esterno

Flusso di controllo di un programma Se non si verifica alcuna eccezione, il codice del blocco try viene eseguito fino alla fine ed il contenuto del blocco catch è ignorato Se viene lanciata uneccezione, lesecuzione delle istruzioni nel blocco try termina e viene eseguita la procedura di gestione delle eccezioni Se esiste un blocco catch per gestire le eccezioni del tipo opportuno, viene eseguito Dopo lesecuzione del blocco catch, lesecuzione prosegue dallistruzione che segue lultimo blocco catch Se non esiste nessun blocco catch in grado di gestire leccezione, lesecuzione riprende dalla funzione terminate() (definita dalla libreria standard del C++ nellheader exception ), che di default chiama abort per terminare lesecuzione del programma

Eccezioni della libreria standard Header exception Definisce exception, il tipo più generico di eccezione, indica solo il fatto che si è verificata uneccezione Header stdexcept exception: il tipo più generale runtime_error: problema che può essere rilevato solo a runtime range_error: il risultano è fuori dal range overflow_error underflow_error logic_errror: problema che avrebbe essere potuto rilevato prima dellesecuzione domain_error: non esiste un risultato per questo valore dellargomento invalid_argument: argomento di tipo non appropriato lenght_error: tentativo di crearo un oggetto di dimensione superiore alla massima consentita out_of_range Header new Definisce bad_alloc, lanciata da new se non riesce ad allocare memoria Header type_info Definisce bad_cast

Eccezioni della libreria standard Exception, bad_alloc, bad_cast hanno solo un costruttore di default Le eccezioni in stdexcept hanno solo un costruttore che prende una stringa di caratteri (messaggio di errore) Hanno solo il metodo const char* what() Restituisce un valore definito dal compilatore (per le eccezioni con costruttore di default) o la stringa passata come argomento al costruttore

Specifica delle eccezioni Una funzione può specificare quali eccezioni può sollevare void int f(int a) throw (E1, E2); specifica che f() può sollevare solo eccezioni di tipo E1 e E2 Se f() dovesse sollevare uneccezione di qualsiasi altro tipo, verrebbe trasformata in std::unexpected() Di default chiama std::terminate() che a sua volta invoca abort() int g() throw(); specifica che g() non solleverà alcuna eccezione double h(double x); può sollevare qualsiasi eccezione