FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni
|
|
|
- Francesco Massari
- 8 anni fa
- Просмотров:
Транскрипт
1 Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria CORSO DI FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Prof. Zambonelli, Ing. Cabri, Ing. Denti, Ing. Andrea Aime Zambonelli, Cabri, Denti, Aime - ECCEZIONI IN JAVA 1
2 ECCEZIONI Ogni programma può incontrare vari tipi di errore durante la sua vita. Questo accade in particolar modo quando il programma fa uso di risorse esterne, fornite dal sistema operativo, quali ad esempio: file stampanti comunicazione fra programmi distinti, in remoto o in locale In una situazione normale nessuno di questi errori si scatena, ma il programma li deve gestire perché sono comunque situazioni possibili (la stampante è spenta, la rete non è disponibile, lo spazio su disco è terminato o non abbiamo i diritti per accedere ad un determinato file). La soluzione del C e di altri linguaggi procedurali è di fornire un valore di ritorno che indica la condizione di errore, o di impostare una variabile globale che può essere verificata. Verificare questi errori significa introdurre controlli (if then..) per ogni operazione critica: il codice risulta rapidamente offuscato dalle routine di gestione errore. Inoltre, non vi è nessun obbligo di gestire questi errori. Java adotta un approccio totalmente differente, basato sul concetto di eccezione e di blocco controllato: le operazioni critiche sono incluse entro un blocco controllato, senza verifiche di errore all interno del blocco se si verifica una eccezione, il controllo salta in un secondo blocco, dedicato alla gestione di una o più eccezioni. Zambonelli, Cabri, Denti, Aime - ECCEZIONI IN JAVA 2
3 Si dice che l operazione critica ha sollevato (o lanciato) una eccezione e che il blocco di gestione l ha catturata. Può accadere che alcune operazioni debbano essere svolte sia nel caso in cui l eccezione venga sollevata, sia nel caso in cui l eccezione non accada. Queste vengono svolte in un apposito blocco di chiusura, tipicamente usato per rilasciare risorse, ad esempio per chiudere file o canali di comunicazione. Il blocco finally è opzionale. try { // operazione critica che può sollevare eccez. catch (XXXException ex) { // gestione dell eccezione ex catch (YYYException ey) { // gestione dell eccezione ey finally { // operazioni svolte sia che l eccezione sia // sollevata che nel caso opposto Se l operazione può sollevare diversi tipi di eccezione (corrispondenti a diversi tipi di errore), possono essere previsti più blocchi catch di seguito allo stesso blocco try. Ogni blocco cattura l eccezione dichiarata e le sue sottoclassi. Zambonelli, Cabri, Denti, Aime - ECCEZIONI IN JAVA 3
4 ESEMPIO Una tipica operazione critica è la lettura da input. In Java, il dispositivo di input standard è la variabile (static) System.in, di classe InputStream. Poiché InputStream fornisce solo un metodo read() che legge singoli byte, si usa incapsulare System.in in un oggetto dotato di maggiori funzionalità, BufferedReader, che fornisce anche un metodo readline(): import java.io.*; class EsempioIn { public static void main(string args[]){ int a = 0, b = 0; BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); try { System.out.print("Primo valore: "); a = Integer.parseInt(in.readLine()); System.out.print("Secondo valore:"); b = Integer.parseInt(in.readLine()); catch (IOException e) { System.out.println("Errore in input"); System.out.println("La somma vale " + (a+b)); Qui, readline() solleva una IOException in caso di errore in fase di input, mentre Integer.parseInt() solleva una NumberFormatException (non catturata) se la stringa restituita da readline() non corrisponde alla sintassi di un numero intero. Zambonelli, Cabri, Denti, Aime - ECCEZIONI IN JAVA 4
5 COS È UN ECCEZIONE Una eccezione è un oggetto, istanza di java.lang.throwable o di una sua sottoclasse. In particolare, vi sono tre sottoclassi notevoli Error: sono errori fatali, irrecuperabili, che non possono in genere essere gestiti dal programma. Se uno di questi accade, la virtual machine semplicemente termina la sua esecuzione Exception: eccezioni comuni, sottoposte alla regola gestisci o rilancia. RuntimeException: particolare famiglia di eccezioni non sottoposta alla regola gestisci o rilancia. Sono eccezioni che non hanno bisogno di essere gestire, perché corrispondono in genere ad errori di programmazione (ad esempio, IndexOutOfBoundException, ClassCastException), non si dovrebbero verificare in un programma scritto correttamente. Poiché un eccezione è un oggetto, può contenere dati o definire metodi (ad esempio getmessage(), o printstacktrace()). Un metodo entro cui si può generare un eccezione deve gestire l eccezione, con un costrutto try/catch, oppure dichiarare di Zambonelli, Cabri, Denti, Aime - ECCEZIONI IN JAVA 5
6 rilanciarla all esterno del metodo stesso, con la clausola throws: public int readinteger(bufferedreader in) throws IOException, NumberFormatException { return Integer.parseInt(in.readLine()); Una eccezione non catturata si propaga verso l esterno, di blocco in blocco: se raggiunge il main, provoca l aborto del programma. Zambonelli, Cabri, Denti, Aime - ECCEZIONI IN JAVA 6
7 DEFINIRE E GENERARE NUOVE ECCEZIONI Essendo un eccezione un normale oggetto Java è possibile definire nuovi tipi di eccezione definendo nuove classi sollevare eccezioni dall interno di propri metodi. Per definire un nuovo tipo di eccezione basta definire una nuova classe che estenda la classe Exception o una delle sue sottoclassi. Ad esempio: class NumberTooBigException extends IllegalArgumentException { public NumberTooBigException() { super(); public NumberTooBigException(String s){super(s); Solitamente non è necessario definire particolari campi dati, in quanto l informazione fondamentale (il tipo dell eccezione) è già veicolata dalla classe stessa (e dal messaggio s). Per lanciare un eccezione dall interno di un metodo occorre creare l oggetto eccezione, e poi lanciarlo con l istruzione throw: public int readinteger(bufferedreader in) throws IOException, NumberFormatException, NumberTooBigException { int x = Integer.parseInt(in.readLine()); if (x>100) throw new NumberTooBigException(); return x; non confondere throw (che è un istruzione che lancia un eccezione) con la dichiarazione throws (usata nella dichiarazione di una classe) la creazione dell oggetto NumberTooBigException può avvenire - e spesso avviene - entro l istruzione throw stessa. Zambonelli, Cabri, Denti, Aime - ECCEZIONI IN JAVA 7
RETI DI CALCOLATORI Linguaggio Java: Eccezioni
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Eccezioni Prof. Franco Zambonelli Lucidi realizzati in collaborazione
GESTIONE DEGLI ERRORI
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori
Gestione delle eccezioni in Java
Gestione delle eccezioni in Java Fondamenti di Informatica Ingegneria Gestionale Canale AL 1 Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel
19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
Programmazione ad Oggetti
Programmazione ad Oggetti Java Eccezioni Eccezioni in breve Un eccezione è un oggetto che descrive una situazione anomala o di errore L eccezioni vengono lanciate da una parte di un programma e possono
Eccezioni predefinite
Eccezioni predefinite Java mette a disposizione molte eccezioni già confezionate, che descrivono la maggioranza dei problemi che possono verificarsi a run-time. Ognuna di queste è una classe. Tutte queste
Corso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
Gestione delle Eccezioni
Gestione delle Eccezioni Condizioni di Errore Una condizione di errore in un programma può avere molte cause Errori di programmazione Divisione per zero, cast non permesso, accesso oltre i limiti di un
Eccezioni ed asserzioni
Eccezioni ed asserzioni I concetti relativi ad eccezioni, errori ed asserzioni e le relative gestioni, permettono allo sviluppatore di scrivere del software robusto, ovvero che riesca a funzionare correttamente,
Gestione delle eccezioni
Gestione delle eccezioni Raffaella Brighi, a.a. 2007/08 Ereditarietà Corso di Algoritmi e programmazione. A.A. 2007-08 CdL Operatore Informatico Giuridico. Casi di insuccesso Vi sono numerosi problemi
Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla
Eccezioni 1 CASO: SENTIRE E GESTIRE UN ALLARME. Prof. Enrico Denti Università di Bologna A.A. 2012/2013 1 SITUAZIONI CRITICHE IL CONCETTO DI ECCEZIONE
Università degli Studi di Bologna Scuola di Ingegneria e Architettura Eccezioni Corso di Laurea in Ingegneria Informatica Anno accademico 2012/2013 Prof. ENRICO DENTI Dipartimento di Informatica Scienza
Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario La classe String Lettura da input di dati numerici (tipo int) Stampa di dati numerici Uno sguardo al codice Esercizi 21/03/2011 2
Le eccezioni in Java
Eccezioni 1 Le eccezioni in Java i tipi di eccezione sono particolari classi che contengono solo il costruttore ci possono essere più costruttori overloaded sono definite in moduli separati da quelli che
Le basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
Gestione delle eccezioni in Java
Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire
Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]
Programmazione a oggetti
Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi [email protected] Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software
Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni
La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.
Prova d Esame Compito A
Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private static int counter=0; private int code; public
Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
Corso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione
Le basi del linguaggio Java
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Le basi del linguaggio Java Aprile 2010 Le basi del linguaggio Java 1 Prerequisiti Nozioni generali sulla sintassi e semantica del
Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni
Operazioni di input/output Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Input /Output introduzione Per ottenere delle informazioni un programma apre un flusso (Stream)
Asserzioni in Java fondamenti
Asserzioni in Java fondamenti Cosa è un asserzione? Una assertion è una espressione booleana che deve essere true se e solo se il codice sta funzionando correttamente. Se l asserzione risulta falsa, viene
Server Sequenziale. Server Concorrente. Esercitazione: Socket Java con connessione
Esercitazione: Socket Java con connessione Sviluppare un applicazione C/S che effettui il trasferimento di un file dal client al server (put) usando una connessione. In particolare nel servizio: il client
Cifratura simmetrica
Cifratura Cifratura simmetrica Alice canale insicuro Bob 2 Cifratura simmetrica m Algoritmo di decifratura m Alice canale insicuro Algoritmo di cifratura Bob 3 Cifrari simmetrici chiave privata k chiave
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate
Proprietà delle Classi e degli Oggetti in Java
Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di
Java, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM
Java, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM ERRATA CORRIGE dei programmi della prima stampa (Aprile 2004) aggiornato al 20/05/2017 Nota: il codice corretto è ottenibile da quella errato
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
Corso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA1 1.3 - Le strutture di controllo 1 Prerequisiti Istruzioni semplici Strutture di controllo Scittura di semplici applicazioni Java 2 1 Introduzione In molti casi le
Esercitazione. Docente Ing. Mariateresa Celardo
Esercitazione Docente Ing. Mariateresa Celardo [email protected] Scrivere la classe Motorino che ha i seguenti attributi colore: una stringa indicante il colore del motorino, velocità: un
Uguaglianza e copia di oggetti
Uguaglianza e copia di oggetti Sommario 1. Classi Object e Class 2. Uguaglianza superficiale e uguaglianza profonda 3. Copia superficiale e copia profonda 4. Uguaglianza e copia in classi derivate 1 La
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate
Programmazione distribuita in Java. Socket & Client-Server
Programmazione distribuita in Java Socket & Client-Server 1 Strumenti per networking Libreria java.net Socket (Astrazione per una presa di comunicazione) Serializzazione Socket Per comunicare si apre una
Esempio 2: Subtyping
Esempio 2: Subtyping 22 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile di classi già esistenti mediante l aggiunta o la ridefinizione
Operazioni di scrittura e lettura con periferici in linguaggio Java
Operazioni di scrittura e lettura con periferici in linguaggio Java Flussi logici (stream) di output Operazione di scrittura a monitor con uso di stream (flusso logico) di output RAM System.out.println
Gocce di Java. Gocce di Java. Programmazione a oggetti. Pierluigi Crescenzi. Università degli Studi di Firenze
Gocce di Java Programmazione a oggetti Pierluigi Crescenzi Università degli Studi di Firenze Programma: collezione di oggetti che interagiscono tra di loro per mezzo di azioni Cambiando il proprio stato
Multithreading in Java I parte. Lorenzo Gallucci
Multithreading in Java I parte Lorenzo Gallucci Java: un linguaggio ed un sistema predisposti per il multitasking È possibile creare e gestire Thread nativamente (senza dover ricorrere a librerie esterne)
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
