Ciao. Allora, considera questo pezzo di codice:
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
public class ReceiveEMail {
/**
* Oggetto Store
*/
private Store conserva;
/**
* Oggetto properties
*/
private Properties prop;
/**
* Oggetto Sessione
*/
private Session sessione;
/**
* Oggetto Folder simile
* alla casella di posta elettronica
*/
private Folder folder;
/**
* Oggetto messaggio
*/
private Message messaggio;
/**
* Array di messaggi contenuti in quel folder
*/
private Message[] elencoMessaggio;
/**
* Indirizzo mittente
*/
private InternetAddress daChi;
/**
* Indirizzo destinatario
*/
private InternetAddress aChi;
/**
* Oggetto stringa
* contenete l'indirizzo
* del mittente
*/
private String da;
/**
* Costruttore della classe
*/
public ReceiveEMail( ) {
prop = System.getProperties();
sessione = Session.getDefaultInstance( prop, null );
}
/**
* Metodo che si occupa di settare lo Sotre in base a:
* 1) tipo di protocollo ( Se POP3 o IMAP )
* 2) l'host cui connettersi
* 3) l'username
* 4) la password
* @param provider -specifica se s i usa POP3 oppure IMAP o qualsiasi altro
* @param host -l'host cui connettersi
* @param userName -l'username del client
* @param password -la password del client
*/
private void setStore( String provider, String host, String userName, String password ){
try {
conserva = sessione.getStore( provider );
conserva.connect( host, userName, password );
}
catch (NoSuchProviderException ex) {
ex.printStackTrace();
}
catch( MessagingException me ){
me.printStackTrace();
}
}
............
}
Come vedi nel metodo setStore c'è un blocco try/catch Questo serva a fare in modo che se capita una certa eccezione ( nel mio caso NoSuchProviderException e MessagingException ) il controllo passa al blocco catch che la gestisce secondo come il programmatore ( cioè noi) ha deciso; nel mio caso semplicemente gli faccio stampare l'errore. Se non avessi voluto usare ciò avrei potuto fare:
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
public class ReceiveEMail {
/**
* Oggetto Store
*/
private Store conserva;
/**
* Oggetto properties
*/
private Properties prop;
/**
* Oggetto Sessione
*/
private Session sessione;
/**
* Oggetto Folder simile
* alla casella di posta elettronica
*/
private Folder folder;
/**
* Oggetto messaggio
*/
private Message messaggio;
/**
* Array di messaggi contenuti in quel folder
*/
private Message[] elencoMessaggio;
/**
* Indirizzo mittente
*/
private InternetAddress daChi;
/**
* Indirizzo destinatario
*/
private InternetAddress aChi;
/**
* Oggetto stringa
* contenete l'indirizzo
* del mittente
*/
private String da;
/**
* Costruttore della classe
*/
public ReceiveEMail( ) {
prop = System.getProperties();
sessione = Session.getDefaultInstance( prop, null );
}
/**
* Metodo che si occupa di settare lo Sotre in base a:
* 1) tipo di protocollo ( Se POP3 o IMAP )
* 2) l'host cui connettersi
* 3) l'username
* 4) la password
* @param provider -specifica se s i usa POP3 oppure IMAP o qualsiasi altro
* @param host -l'host cui connettersi
* @param userName -l'username del client
* @param password -la password del client
*/
private void setStore( String provider, String host, String userName, String password ) throws NoSuchProviderException, MessagingException{
conserva = sessione.getStore( provider );
conserva.connect( host, userName, password );
}
............
}
In questo caso chiunque avesse chiamato il metodo setStore avrebbe dovuto occuparsi di gestire le due possibili eccezioni o inserendo try/catch oppure, nel caso fosse un altro metodo a chiamare setStore, con throws.......
In tal caso c'è una cosiddetta "propagazione" dell'eccezione che, se non gestita,potrebbe giungere al main e far terminare il programma anomalamente. Spero di essere stato più chiaro di prima.
Ciao![]()