Lezione 8 Eccezioni e Thread

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Lezione 8 Eccezioni e Thread"

Transcript

1 Lezione 8 Eccezioni e Thread Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Le eccezioni motivazioni come si creano come si lanciano come si catturano I thread motivazioni stati e transizioni priorità e gruppi Esercizi 2 A.A Università di Salerno 1

2 Il Mondo reale In un mondo perfetto: Gli errori non capitano mai Invece i file da aprire non ci sono il nome di un utente risulta digitato scorrettamente etc. etc Un linguaggio di programmazione che si rispetti dovrebbe offrire strumenti per facilitare la gestione degli errori da parte del programmatore 3 Il tipo di problemi da considerare Errori di input dell utente: digitazione di una URL scorretta sintatticamente, che la parte del programma che usa la rete cerca di utilizzare Errore dei dispositivi: stampante spenta o con carta terminata pagina HTML non disponibile ( sei collegato alla rete? ) Restrizioni fisiche: disk full Errori di codice pop da stack vuoti, divisione per zero 4 A.A Università di Salerno 2

3 Il meccanismo delle eccezioni Quando una condizione eccezionale avviene ( eccezione ) il metodo crea un oggetto eccezione e lo affida (per la gestione) al sistema run-time L oggetto contiene varie informazioni su il tipo di eccezione dove è capitata etc. Il sistema run-time cerca qualcuno (gestore delle eccezioni) che sia in grado di trattare la eccezione altrimenti il programma termina 5 Propagazione delle eccezioni Le eccezioni si propagano attraverso blocchi di metodi Java passando al metodo chiamante (sullo stack) e così via, fino a che: viene catturata e gestita oppure viene gestita dalla JVM che: stampa un messaggio di errore stampa le chiamate di metodi sullo stack (stack trace) esce 6 A.A Università di Salerno 3

4 Le eccezioni in Java Eccezione: oggetto che indica condizioni eccezionali (errori) avvenuti nel programma Una eccezione viene: "lanciata" (throw) quando si segnala l'errore "colta" (catch) (o catturata) quando viene trattata Permette di gestire gli errori: con semplicità con efficienza in maniera strutturata/strutturale 7 I vantaggi di questo meccanismo Separare il codice per la gestione degli errori dal codice normale I tipi di errore possono essere creati e raggruppati creando una gerarchia Gli errori possono essere trattati in locazioni specifiche: senza dover disperdere la gestione degli errori in tutto il codice 8 A.A Università di Salerno 4

5 Le eccezioni sono oggetti Istanza di una sottoclasse di java.lang.throwable Error : condizioni della macchina virtuale (esaurimento di risorse interne, etc.) non recuperabili e (di norma) da non cogliere Exception :condizioni recuperabili del programma Eccezioni incontrollate (specifiche del linguaggio) Eccezioni controllate (specifiche di applicazione) 9 La classe Exception Le condizioni recuperabili in RuntimeException si trovano problemi come: cast difettoso, accesso ad array fuori dai limiti, uso ed accesso di un puntatore nullo, etc. tutti i problemi causati dal programmatore! in Exception si trovano problemi come: lettura dopo la fine di un file, apertura di un URL sintatticamente errato, oggetto Class per cui la stringa non indica una classe esistente, etc. tutti i problemi causati dall utente/dall ambiente 10 A.A Università di Salerno 5

6 Informazioni sulle eccezioni Le eccezioni (come oggetti) hanno dati e metodi che possono essere usati. Esempi: Throwable ha un messaggio String assegnabile dal costruttore InterruptedIOException contiene un intero bytestransferred che indica quanto I/O è stato compiuto 11 Metodi che lanciano eccezioni Nella dichiarazione di un metodo si dichiara i modificatori di accesso del metodo il tipo di metodo (static, abstract, etc.) il tipo del parametro restituito il tipo ed il nome dei parametri formali il tipo di eccezioni che quel metodo può generare Questo permette/obbliga chi usa il metodo a fare il catch della eccezione public void read_file() throws IOException {.. 12 A.A Università di Salerno 6

7 Cosa si deve dichiarare come eccezione In generale non si devono dichiarare tutte le eccezioni Throwable Quattro possibili situazioni: il metodo chiama un metodo che può lanciare una eccezione controllata il metodo può lanciare (generare) una eccezione controllata errore di programmazione (indice di array etc.) errore interno della JVM Ovviamente, si devono dichiarare le eccezioni dei primi due casi: per gli altri due, meglio cercare di risolvere i problemi! 13 Come lanciare una eccezione Una situazione che può capitare in read_file() si sta leggendo un file che dovrebbe essere di 1024 byte ma dopo 657 byte il file termina In questo caso, esiste una eccezione EOFException (derivata da IOException) che segnala proprio queste condizioni In questo caso il metodo deve dichiarare: public void read_file() throws EOFException {.. 14 A.A Università di Salerno 7

8 Il metodo read_file public void read_file() throws EOFException {.. //. legge il file while ( ) { if (ch == -1 && n < filelength) // incontro EOF inattesa { EOFException e = new EOFException(); throw e; Supponiamo che n sia il numero di caratteri letti filelength è la lunghezza del file Se si verifica la condizione di eccezione costruisco un oggetto della classe EOFException e lo lancio 15 Creazione di classi di eccezioni E possibile creare delle eccezioni specializzate per la applicazione Basta derivarle da Exception (o da una sua sottoclasse) Di solito: si assegna alla eccezione un messaggio esplicativo lo si passa al costruttore della superclasse si usa il metodo getmessage() di Throwable per poter accedere alla stringa esplicativa 16 A.A Università di Salerno 8

9 Una eccezione FileFormatException class FileFormatException extends IOException { public FileFormatException () { super(); public FileFormatException (String s) { super (s); if ( ) throw new FileFormatException( Formato errato nel file dati ); Costruttori senza argomenti con una stringa di commento che viene passata al costruttore della superclasse Un esempio di uso 17 Gestione delle eccezioni: propagazione Se un metodo usa un altro metodo che può lanciare una eccezione, ci sono solo due possibilità può trattarla può propagarla Il compilatore controlla la correttezza del trattamento delle eccezioni Se si propaga, il metodo va scritto con throws public void gestionefiledati() throws EOFException {.. //. legge il file read_file(); 18 A.A Università di Salerno 9

10 Gestione delle eccezioni: cattura (catch) Java fornisce un meccanismo per: racchiudere un intero blocco di codice al cui interno vengono intercettate le eccezioni e fornire (per ogni eccezione) colta le modalità di gestione try {. catch (.. ) { fornire un blocco di istruzioni che viene comunque eseguito (con o senza eccezioni) try {. catch (.. ) { finally { 19 Un esempio di cattura delle eccezioni public void gestionefiledati() {.. try { //. legge il file read_file(); catch (EOFException e) { // codice per trattare l'oggetto e catch (FileFormatException e) { // codice per trattare l'oggetto e finally { // comunque prima di uscire rilascia // risorse accedute..... L uso del metodo read_file() in un blocco try Vengono intercettate e gestite le eccezioni Possibile specificare la cattura in maniera diversificata 20 A.A Università di Salerno 10

11 Uso di finally e delle catch Tre possibilità il codice non lancia alcuna eccezione viene eseguito il blocco try, il blocco finally e poi continua il codice lancia una eccezione che viene catturata viene eseguito il blocco try (fino al lancio della eccezione) poi il blocco catch corrispondente, poi il blocco finally e poi continua il codice lancia una eccezione che non viene catturata viene eseguito il blocco try (fino al lancio della eccezione) poi il blocco finally e poi la eccezione viene lanciata al metodo chiamante 21 L'uscita da un blocco try..catch La parte finally dello statement viene eseguita: normalmente al termine del blocco try con eccezioni colte e trattate da catch con eccezioni non colte e trattate ma propagate a causa di un break, continue o return attenzione! prima di un return viene eseguita la finally Di grande utilità per "ripulire" Concentra in una posizione tutte le operazioni si può usare anche senza catch 22 A.A Università di Salerno 11

12 Organizzazione della lezione Le eccezioni motivazioni come si creano come si lanciano come si catturano I thread motivazioni stati e transizioni priorità e gruppi Esercizi 23 I thread Java è un linguaggio multithreaded Classe java.lang.thread i thread sono oggetti con un nome, un gruppo, una priorità, un tipo, uno stato derivati da Thread oppure si usa la interface Runnable ed in questo caso l oggetto va passato al costruttore di Thread Si può lanciare un thread t (eseguire t.start() che esegue il suo metodo run) mettere in sleep (per un certo tempo) sospendere / resume 24 A.A Università di Salerno 12

13 Un esempio di Thread (1) package runners; class Conta implements Runnable { public Conta (String nom, int lim, int sleep){ limite = lim; nome = nom; sleeptime = sleep; public void run () { for (int i=0;i<limite; i++) { try {Thread.sleep(sleeptime); catch (Exception ex) { System.out.println (nome+":"+i+"."); private int limite; private String nome; private int sleeptime; Conta fino a lim fermandosi sleeptime ms Costruttore Metodo run chiamata a Thread.sleep necessario fare il catch 25 Un esempio di Thread (2) package runners; public class Runner { public static void main (String args[]) { Thread t1=new Thread (new Conta("1",5,300)); Thread t2=new Thread (new Conta("2",5,100)); t1.start(); t2.start(); Istanzio due thread e li lancio $ java runners.runner 2:0 2:1 1:0 2: :1 2:4 1:2 1:3 1:4 26 A.A Università di Salerno 13

14 Il problema dell accesso concorrente E possibile rendere synchronized metodi o oggetti (risorse): viene assicurato che solamente un thread starà eseguendo quella porzione di codice in un dato momento. Per i metodi: Per gli oggetti (risorse): synchronized metodo (, ) synchronized (x) { 27 Gli stati di un thread Un thread si può trovare in uno di 4 stati new: appena creato: il programma non è stato eseguito ancora runnable: quando si invoca il metodo start() il thread è eseguibile in effetti la sua esecuzione dipende da JVM e dal S.O. blocked: quando viene chiamato il suo metodo sleep(), sta facendo I/O bloccante, chiama il metodo wait() dead: quando viene chiamato il metodo stop(), o si verifica una eccezione non catturata 28 A.A Università di Salerno 14

15 Le transizioni possibili di un Thread new start runnable stop dead sleep suspend resume wait notify blocked blocking I/O I/O completed 29 Priorità dei thread Ogni thread ha una priorità assegnabile con setpriority() compresa tra MIN_PRIORITY (1) e MAX_PRIORITY (10) Quando deve essere eseguito un thread, viene eseguito quello con priorità massima (o uno tra di loro) scelta dipendente dalla implementazione della JVM Un thread al massimo valore di priorità viene eseguito fino a quando: chiama il metodo yield() cessa di essere runnable (può essere dead o blocked) un thread a priorità maggiore è runnable 30 A.A Università di Salerno 15

16 Gruppi di Thread String tname= gruppo : ThreadGroup g = new ThreadGroup(tName);.. Thread t = new Thread (g, Tizio ); String sname= sottogruppo : ThreadGroup s = new ThreadGroup(g, sname); Thread u = new Thread (g, Caio ); if (g.activecount() == 0). g.interrupt();.. s.interrupt(); Per categorizzare un pool di thread Crea un gruppo Aggiunta di un thread Tizio Crea un sottogruppo di g Aggiunta di un thread Caio al sottogruppo Conta i thread nel gruppo compresi i sottogruppi Interrompi tutti i thread solo quelli di s 31 Organizzazione della lezione Le eccezioni motivazioni come si creano come si lanciano come si catturano I thread motivazioni stati e transizioni priorità e gruppi Esercizi 32 A.A Università di Salerno 16

17 Un esercizio Scrivere un programma che gestisca un insieme di studenti. Per ogni studente si deve poter memorizzare: Cognome e Nome Matricola Corso di Laurea Facoltà Lista degli esami sostenuti: nome dell esame data voto 33 Alcuni suggerimenti (1) Strutturare con cura la gerarchia delle classi: usare una classe Studente per i dati relativi al singolo studente usare una classe StudenteTest per implementare la gestione di questo insieme di studenti usare una classe Esame per gli esami Adottare i principi della programmazione OO astrazione, modularità incapsulamento dei dati: prevedete metodi per la modifica di campi private 34 A.A Università di Salerno 17

18 Alcuni suggerimenti (2) Curate, innanzitutto, nelle classi Studente e Esame: potete usare (in prima approssimazione) per StudenteTest la stessa semplice struttura di EmployeeTest (ad es. niente input) Alcune varianti per rendere più succoso l esercizio: prevedere che gli esami possano avere sia un voto sia solamente un giudizio ( idoneo ) prevedere che esami possano essere stati sostenuti in un altro Ateneo (studente trasferito) per entrambi i casi, utilizzate gli strumenti per creare una adeguata gerarchia delle classi (classi astratte, etc.) prevedere la stampa degli esami in ordine di voto e in ordine di data 35 Alcune domande Come si indica una costante in Java Come si dichiara una variabile che è un array di interi di 45 interi? Avendo dichiarato due stringhe s e q (ed assegnato loro un valore) come posso controllare la uguaglianza? Quale è la differenza tra una classe astratta ed una interface? A cosa serve la keyword static per un metodo? Come si fa a controllare che due oggetti appartengano alla stessa classe? 36 A.A Università di Salerno 18

ASD: Sistemi Distribuiti (Prof. Scarano) 24/04/2002

ASD: Sistemi Distribuiti (Prof. Scarano) 24/04/2002 Organizzazione della lezione 8. Java: Eccezioni e Thread Vittorio Scarano Algoritmi e Strutture Dati: Sistemi Distribuiti Corso di Laurea in Informatica Università degli Studi di Salerno Le eccezioni come

Dettagli

8. Java: Eccezioni e Thread

8. Java: Eccezioni e Thread 8. Java: Eccezioni e Thread Vittorio Scarano Algoritmi e Strutture Dati: Sistemi Distribuiti Corso di Laurea in Informatica Università degli Studi di Salerno Organizzazione della lezione Le eccezioni motivazioni

Dettagli

"Programmazione Distribuita" - Prof. Scarano. Laurea in Informatica. A.A Università di Salerno 1. Organizzazione della lezione

Programmazione Distribuita - Prof. Scarano. Laurea in Informatica. A.A Università di Salerno 1. Organizzazione della lezione Lezione 8 Eccezioni e Thread Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Programmazione Distribuita. Vi.ttorio Organizzazione della

Dettagli

Eccezioni e Thread (cenni)

Eccezioni e Thread (cenni) Eccezioni e Thread (cenni) Linguaggi di Programmazione: Paradigmi di Programmazione (Sperimentazioni) Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149

Dettagli

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

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

Dettagli

Laboratorio di reti I

Laboratorio di reti I Laboratorio di reti I Stefano Brocchi brocchi@dsi.unifi.it 13 ottobre, 2009 Stefano Brocchi Laboratorio di reti I 13 ottobre, 2009 1 / 27 Introduzione Obiettivi del corso Aspetti di programmazione Java

Dettagli

GESTIONE DEGLI ERRORI

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

Dettagli

GESTIONE DEGLI ERRORI

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

Dettagli

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

Dettagli

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni 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,

Dettagli

Eccezioni. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi.

Eccezioni. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi. Eccezioni Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi fanizzi@di.uniba.it 2 Eccezione Evento anormale che avviene durante l'esecuzione del programma

Dettagli

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Eccezioni L esistenza di

Dettagli

Il linguaggio Java. Le eccezioni

Il linguaggio Java. Le eccezioni Il linguaggio Java Le eccezioni Eccezioni Definizione: evento eccezionale che si verifica durante l esecuzione di un programma e che ne altera il normale flusso di esecuzione Situazioni che causano eccezioni

Dettagli

Programmazione a Oggetti Lezione 11. Eccezioni e Packages

Programmazione a Oggetti Lezione 11. Eccezioni e Packages Programmazione a Oggetti Lezione 11 Eccezioni e Packages Sommario Eccezioni Sollevamento Cattura Trattamento Packages e visibilità Eccezioni I programmi spesso si trovano ad operare in condizioni anomale:

Dettagli

Eccezioni. Programmazione in rete e laboratorio Eccezioni. Classi eccezioni

Eccezioni. Programmazione in rete e laboratorio Eccezioni. Classi eccezioni Programmazione in rete e laboratorio 2004-05 Alberto Martelli Eccezioni Eccezioni Eccezioni: meccanismo per trattare condizioni eccezionali - divisione per zero - indice di array fuori dai limiti - errori

Dettagli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER

Dettagli

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Ingegneria del software A Input/output (in Java) Michele Tomaiuolo Eccezione Un eccezione è

Dettagli

Gestione delle eccezioni in Java

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

Dettagli

Insegnamento di Laboratorio di algoritmi e strutture dati

Insegnamento di Laboratorio di algoritmi e strutture dati Insegnamento di Laboratorio di algoritmi e strutture dati Roberto Posenato ver. 0.6, 31/01/2008 1 / 25 Si comincia... 1 Esigenza... Definizione Tipi di eccezioni Sollevare eccezioni Gestire le eccezioni

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Eccezioni Le eccezioni sono situazioni di errore che possono essere generate e gestite dal vostro programma a run-time Quando viene

Dettagli

Inizializzare oggetti

Inizializzare oggetti Inizializzare oggetti Uso della Classe Software per TLC - AA 2008/2009 1 Costruttori e polimorfismo Uso della Classe Un codice migliore Software per TLC - AA 2008/2009 2 Costruttori ed Ereditarietà Output:

Dettagli

Le eccezioni in Java

Le eccezioni in Java Le eccezioni in Java Corso di laurea in 1 Eccezioni L istruzione try/catch La propagazione dell eccezioni Intercettare e gestire eccezioni 2 Eccezioni in breve Un eccezione è un oggetto che descrive una

Dettagli

Programmazione ad Oggetti

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

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Eccezioni Categorie di eccezioni checked unchecked Gestione delle eccezioni Clausola throws Costrutto try - catch - finally Comando

Dettagli

Eccezioni in Java A. FERRARI

Eccezioni in Java A. FERRARI Eccezioni in Java A. FERRARI Eccezioni Una eccezione è un oggetto che descrive una situazione anomala o una situazione di errore Le eccezioni vengono «lanciate» (throw) in un punto del programma e possono

Dettagli

Progettazione del Software

Progettazione del Software Progettazione del Software Programmazione in Java (3) Le eccezioni Domenico Fabio Savo Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Sapienza Università di R o m a Anno

Dettagli

Gli errori nei programmi si verificano Quello che è realmente importante è: cosa fare dopo che un errore si è verificato?

Gli errori nei programmi si verificano Quello che è realmente importante è: cosa fare dopo che un errore si è verificato? Il linguaggio Java Le eccezioni Shit happens! Gli errori nei programmi si verificano Quello che è realmente importante è: cosa fare dopo che un errore si è verificato? Le eccezioni 2 Eccezione Eccezione

Dettagli

Multithread e multitasking

Multithread e multitasking Organizzazione della lezione Lezione 7 Thread e Riflessione Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno I thread

Dettagli

Thread in Java. Thread = flusso di esecuzione indipendente nel codice del programma

Thread in Java. Thread = flusso di esecuzione indipendente nel codice del programma Thread in Java Thread = flusso di esecuzione indipendente nel codice del programma Come si può realizzare il concetto di Thread in Java? Seguendo la filosofia OO: sono oggetti particolari ai quali si richiede

Dettagli

Esercitazione 2: Java Thread

Esercitazione 2: Java Thread Esercitazione 2: Java Thread Thread Un thread è un singolo flusso sequenziale di controllo all interno di un processo Un thread (o processo leggero) è un unità di esecuzione che condivide codice e dati

Dettagli

Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread:

Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread: Esercitazione 2: Thread Un thread è un singolo flusso sequenziale di controllo all interno di un processo Un thread (o processo leggero) è un unità di esecuzione che condivide codice e dati con altri thread

Dettagli

I Thread. un thread è uno stream di esecuzione del programma

I Thread. un thread è uno stream di esecuzione del programma I Thread un thread è uno stream di esecuzione del programma Sistema Operativo e Thread Un processo o thread una successione di operazioni che vengono eseguite dal sistema operativo in modo sequenziale

Dettagli

Laboratorio di Informatica I

Laboratorio di Informatica I Organizzazione della lezione Lezione 3: Un tour sulla sintassi di Java Vittorio Scarano Algoritmi e Strutture Dati: Algoritmi Distribuiti Corso di Laurea in Informatica Università degli Studi di Salerno

Dettagli

I Thread. Sistema Operativo e Thread

I Thread. Sistema Operativo e Thread I Thread un thread è uno stream di esecuzione del programma Sistema Operativo e Thread Un processo o thread una successione di operazioni che vengono eseguite dal sistema operativo in modo sequenziale

Dettagli

LE ECCEZIONI. Dott. Riccardo Zese.

LE ECCEZIONI. Dott. Riccardo Zese. LE ECCEZIONI Dott. Riccardo Zese riccardo.zese@unife.it Che cosa sono le eccezioni In un programma si possono generare situazioni critiche che provocano errori. Non è però accettabile, soprattutto in applicazioni

Dettagli

Programmazione a oggetti

Programmazione a oggetti Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica (L-Z) Corso di Laurea in Ingegneria Gestionale OOP: I/O da/su File e Java Exceptions Prof. Stefano Mariani Dott. Alket Cecaj Indice I/O da/su file: java.io e java.nio BufferedReader

Dettagli

Organizzazione della lezione. Organizzazione della lezione. Lezione 5 Programmazione generica e eccezioni

Organizzazione della lezione. Organizzazione della lezione. Lezione 5 Programmazione generica e eccezioni Organizzazione della lezione Lezione 5 Programmazione generica e eccezioni Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di

Dettagli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER

Dettagli

Eccezioni predefinite

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

Dettagli

Il linguaggio Java. Le eccezioni

Il linguaggio Java. Le eccezioni Il linguaggio Java Le eccezioni Shit happens! Gli errori nei programmi si verificano Quello che è realmente importante è: cosa succede dopo che un errore si è verificato? TIGA 2 Eccezione Un'eccezione

Dettagli

Le eccezioni in Java

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

Dettagli

Programmazione Concorrente

Programmazione Concorrente Programmazione Concorrente Programmazione in Ambienti Distribuiti A.A. 2003-04 Programmi sequenziali Stack (Variabili locali) Stack pointer Istruzioni Heap (Oggetti) 2 1 Processi paralleli Processo 1 Processo

Dettagli

Eccezioni per codificare errori. Eccezioni. Gestione di eccezioni. lancio di eccezioni. checked e unchecked. cattura di eccezioni

Eccezioni per codificare errori. Eccezioni. Gestione di eccezioni. lancio di eccezioni. checked e unchecked. cattura di eccezioni Eccezioni Eccezioni per codificare errori lancio di eccezioni Eccezioni user defined checked e unchecked Gestione di eccezioni cattura di eccezioni Gestione degli errori Approccio tradizionale: codifica

Dettagli

Esercizi sui Thread. Esercitazione di Laboratorio di Programmazione di Rete A. Daniele Sgandurra 24/09/2008. Università di Pisa

Esercizi sui Thread. Esercitazione di Laboratorio di Programmazione di Rete A. Daniele Sgandurra 24/09/2008. Università di Pisa Esercizi sui Thread Esercitazione di Laboratorio di Programmazione di Rete A Daniele Sgandurra Università di Pisa 24/09/2008 Creare Thread: l Interfaccia Runnable Per eseguire un attività in un thread

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA9 B3.1 Mutua esclusione 1 Prerequisiti Programmazione concorrente Sezione critica Mutua esclusione lock() e unlock() 2 1 Introduzione Si considerino le seguenti situazioni

Dettagli

OOP: L13: Eccezioni e loro trattamento in Java

OOP: L13: Eccezioni e loro trattamento in Java Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica A. Acc. 2005/2006 Programmazione Orientata agli Oggetti OOP: L13: Eccezioni e loro trattamento

Dettagli

Gestione degli Errori in Java. Emilio Di Giacomo e Walter Didimo

Gestione degli Errori in Java. Emilio Di Giacomo e Walter Didimo Gestione degli Errori in Java Emilio Di Giacomo e Walter Didimo Errori in fase di esecuzione Un programma può contenere o generare errori in fase di esecuzione, di varia natura: errori di robustezza: dovuti

Dettagli

Le eccezioni in Java

Le eccezioni in Java Le eccezioni in Java G. Grossi 17 gennaio 2007 Indice 1 Le eccezioni Gerarchia eccezioni Le eccezioni Object Throwable Error Exception Controllate Non controllate RunTimeException Indice Le eccezioni 1

Dettagli

Multitheading. Corso di Laurea in Informatica. Sperimentazioni di Linguaggi di Programmazione: Paradigmi di Programmazione. a.a.

Multitheading. Corso di Laurea in Informatica. Sperimentazioni di Linguaggi di Programmazione: Paradigmi di Programmazione. a.a. Multitheading Corso di Laurea in Informatica Sperimentazioni di Linguaggi di Programmazione: Paradigmi di Programmazione a.a. 1999/2000 Matteo Baldoni 1 Thread multipli all interno di un Task thread PC

Dettagli

Java fornisce una ricca gerarchia di classi di eccezioni: Object

Java fornisce una ricca gerarchia di classi di eccezioni: Object Java fornisce una ricca gerarchia di classi di eccezioni: Object +----Throwable +----Error +----VirtualMachineError... +----Exception +----RuntimeException +----ArithmeticException +----IndexOutOfBoundsException

Dettagli

La gestione delle eccezioni

La gestione delle eccezioni La gestione delle eccezioni La gestione delle eccezioni Le eccezioni sono eventi che accadono in fase di esecuzione di un programma al verificarsi di una situazione anomala, come la divisione per 0, l'uso

Dettagli

Java thread, concorrenza

Java thread, concorrenza Java thread, concorrenza laboratorio 1 A.Memo febbraio 2004 il thread principale in Java ogni programma in esecuzione è un thread il metodo main() è associato al main thread per poter accedere alle proprietà

Dettagli

Programmazione a Oggetti. Eccezioni

Programmazione a Oggetti. Eccezioni Programmazione a Oggetti Eccezioni Sommario Eccezioni Generalità, motivazioni Eccezioni in Java Sollevamento Cattura Trattamento Eccezioni I programmi spesso si trovano ad operare in condizioni anomale:

Dettagli

Gestione delle eccezioni

Gestione delle eccezioni Gestione delle eccezioni Le eccezioni sono un meccanismo per gestire situazioni anomale durante l esecuzione dei metodi. La gestione delle eccezioni deve garantire i seguenti principi: - le eccezioni non

Dettagli

Gestire le eccezioni. Lezione XI

Gestire le eccezioni. Lezione XI Gestire le eccezioni Lezione XI Scopo della lezione Studiare il meccanismo di gestione delle eccezioni Implementare nuove eccezioni IX-B.2 Tipi di errori Errori rilevati in fase di compilazione: errori

Dettagli

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1. OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione,

Dettagli

Le eccezioni in Java

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

Dettagli

Le eccezioni. Eccezioni

Le eccezioni. Eccezioni Le eccezioni Che cosa sono le eccezioni In un programma si possono generare situazioni critiche che provocano errori Non è però accettabile, soprattutto in applicazioni complesse, che un qualunque errore

Dettagli

Dal libro di Savitch & Carrano

Dal libro di Savitch & Carrano Dal libro di Savitch & Carrano Un eccezione (exception) è un oggetto che segnala l accadere di un evento anomalo durante l esecuzione di un metodo. Il processo di creazione di quest oggetto (cioè di generazione

Dettagli

Introduzione. Java. Errori. Errori

Introduzione. Java. Errori. Errori Java gestire gli errori con le eccezioni G. Prencipe prencipe@di.unipi.it Introduzione La filosofia generale di Java è che un programma con errori non deve girare Una grossa parte viene fatta (come avete

Dettagli

Threads in Java. I threads. Costruttori. Prof.ssa Sara Michelangeli

Threads in Java. I threads. Costruttori. Prof.ssa Sara Michelangeli Threads in Java Prof.ssa Sara Michelangeli I threads I threads o "processi leggeri" (light weight process) sono flussi di esecuzione nell'ambito di uno stesso processo, che condividono tra loro risorse

Dettagli

Gestione delle eccezioni

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

Dettagli

Introduzione alla programmazione con linguaggio Java {Dott.ssa E. Calabresu, Dr. M. Carta, Ing. M. Ennas, Ing. S. Piras, Ing. F.

Introduzione alla programmazione con linguaggio Java {Dott.ssa E. Calabresu, Dr. M. Carta, Ing. M. Ennas, Ing. S. Piras, Ing. F. Introduzione alla programmazione con linguaggio Java 2004 {Dott.ssa E. Calabresu, Dr. M. Carta, Ing. M. Ennas, Ing. S. Piras, Ing. F. Saba } Note di Copyright Queste trasparenze (slide) sono coperte dalle

Dettagli

Sistemi Operativi. Processi e thread

Sistemi Operativi. Processi e thread Sistemi Operativi Processi e thread A.A. 2018-2019 Processi (e thread) Modello concettuale Creazione di processi 1. System initialization 2. Execution of a process-creation system call by a running process

Dettagli

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java programmi sorgente: files.java compilatore Indipendenza di java dalla macchina ospite Programmi java Programmi java Programmi java files.class bytecode linker/loader bytecode bytecode Java API files.class

Dettagli

Concorrenza e sincronizzazione

Concorrenza e sincronizzazione Concorrenza e sincronizzazione Ingegneria del software Ing. Jody Marca jody.marca@polimi.it Cosa faremo oggi 2 Concorrenza Sincronizzazione Concorrenza 3 Nei programmi Java fino ad ora sviluppati è presente

Dettagli

18 - Classi parzialmente definite: Classi Astratte e Interfacce

18 - Classi parzialmente definite: Classi Astratte e Interfacce 18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

17 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - Classi parzialmente definite: Classi Astratte e Interfacce 17 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Java Thread. Thread. Un thread

Java Thread. Thread. Un thread Java Thread Thread Un thread è un singolo flusso sequenziale di controllo all interno di un processo Un thread (o processo leggero) è un unità di esecuzione che condivide codice e dati con altri thread

Dettagli

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010 Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori l Introduzione ai Thread in Java A.A. 2009/2010 1 Thread Un thread è un flusso sequenziale di esecuzione di istruzioni all interno

Dettagli

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona ed ed Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario ed scrittura su in Java ed ed di testo Scrivere stringhe su di testo

Dettagli

Eccezioni ed asserzioni

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,

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 0 (svolta) Multithreading in Java Luca Foschini Anno accademico 2009/2010 Esercitazione 0 1 Modello

Dettagli

Gestione delle Eccezioni

Gestione delle Eccezioni Gestione delle Eccezioni Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni 1 Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista

Dettagli

Capitolo 7 Un primo sguardo agli oggetti Schema e valori Elementi di classe e d istanza

Capitolo 7 Un primo sguardo agli oggetti Schema e valori Elementi di classe e d istanza I Sommario Prefazione xiii Capitolo 1 Introduzione alla programmazione 1 1.1 Hardware e software......................... 1 1.2 La programmazione......................... 4 1.2.1 I paradigmi di programmazione...............

Dettagli

Programmazione in Java (I modulo) Lezione 20: Ereditarietà

Programmazione in Java (I modulo) Lezione 20: Ereditarietà Programmazione in Java (I modulo) Lezione 20: Ereditarietà Ereditarietà (Inheritance) Il programmatore definisce una classe generale In seguito definisce una classe più specifica Aggiungo soltanto nuovi

Dettagli

Multithreading. Multithreading/2

Multithreading. Multithreading/2 Multithreading Osservazioni su EchoServer Programmazione TCP in Java EchoServer ed EchoClient Uso del multithreading nella programmazione di rete ChatClient e ChatServer Esempio di Web server(?) Multithreading/2

Dettagli

NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!!

NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!! NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!! OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/

Dettagli

Multithreading in Java I parte. Lorenzo Gallucci

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)

Dettagli

Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1

Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1 Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1 Gerarchia delle classi Una sottoclasse eredita metodi, variabili, etc. dalla superclasse... Per

Dettagli

Multithreading/2. Più richieste servite simultaneamente > 1 thread per ogni connessione client (+ 1 thread per accettare nuove richieste).

Multithreading/2. Più richieste servite simultaneamente > 1 thread per ogni connessione client (+ 1 thread per accettare nuove richieste). Multithreading Osservazioni su EchoServer Programmazione TCP in Java EchoServer ed EchoClient Uso del multithreading nella programmazione di rete ChatClient e ChatServer Multithreading/2 Più richieste

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA9 B2 Multithreading 1 Prerequisiti Programmazione base in Java Significato di multithreading Concetti di base sui sistemi operativi Attesa attiva Attesa passiva 2 1

Dettagli

Java Threads. esempi

Java Threads. esempi Java Threads esempi Creazione public class ProvaThread { public static void main(string[] args) { Runnable r = new MyRunnable(); Thread t = new Thread(r);.... class MyRunnable implements Runnable { public

Dettagli

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili Riuso di classi Spesso si ha bisogno di classi simili Si vuole cioè riusare classi esistenti per implementare attributi e metodi leggermente diversi Non è pratico copiare la classe originaria e modificarne

Dettagli

Oggetti e dati primitivi 1

Oggetti e dati primitivi 1 I membri delle classi Oggetti e dati primitivi Corso di laurea in Le classi contengono 2 tipi di membri, definiti per l intera classe o per le singole istanze Le variabili o i campi, che rappresentano

Dettagli

{4, 4, 2, 9, 13} {2, 2, 9, 13, 0} {0, 4, 2, 9, 13} {2, 9, 13, 0, 0}

{4, 4, 2, 9, 13} {2, 2, 9, 13, 0} {0, 4, 2, 9, 13} {2, 9, 13, 0, 0} 16181 Nome Cognome A domande a risposta multipla con n scelte, la risposta corretta vale (n-1)/n*difficoltàdomanda, la risposta errata -1/n*difficoltà domanda, la risposta non data. Eseguendo il frammento

Dettagli

Metodi. Un metodo è una porzione di codice a cui si associa un nome. Un istruzione eseguita da un metodo può essere:

Metodi. Un metodo è una porzione di codice a cui si associa un nome. Un istruzione eseguita da un metodo può essere: Metodi Un metodo è una porzione di codice a cui si associa un nome. Un istruzione eseguita da un metodo può essere: invocazione: esecuzione di un metodo assegnamento: cambia lo stato di un campo ripetizione:

Dettagli

Esercizio Sincronizzazione Thread

Esercizio Sincronizzazione Thread Esercitazione di oratorio 17/10/2007 Esercizio Il laboratorio di Informatica del Polo Marzotto e utilizzato da tre tipi di utenti, studenti, tesisti e professori ed ogni utente deve fare una richiesta

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

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

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Gestione delle eccezioni in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Gestione delle eccezioni in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 15 - Gestione delle eccezioni

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 13 Alberto Ceselli ceselli@dti.unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 7 Maggio 2007 Outline Java e C# 1 Java

Dettagli

Università Ca Foscari DAIS. Programmazione ad Oggetti. Esame del modulo 1

Università Ca Foscari DAIS. Programmazione ad Oggetti. Esame del modulo 1 Università Ca Foscari DAIS Programmazione ad Oggetti Esame del modulo 1 Nome: Matricola: Samuel Rota Bulò, a.a. 2012/2013 Programmazione ad Oggetti a.a. 2012/2013 Esame del modulo 1 Nome: Samuel Rota Bulò

Dettagli

Prova d Esame Compito A

Prova d Esame Compito A Prova d Esame 19.04.2005 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 int counter;

Dettagli

Programmazione I - corso B a.a prof. Viviana Bono

Programmazione I - corso B a.a prof. Viviana Bono Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 12 Riepilogo e complementi sui tipi Ripasso del sistema di tipi

Dettagli

Laboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java.

Laboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java. Di solito se abbiamo la struttura di una classe con gli attributi e i metodi possiamo istanziare

Dettagli

Java Virtual Machine

Java Virtual Machine Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina

Dettagli