Ho il classico menù dove ad ogni numero corrisponde al richiamo di una funzione ma va bene effettuare un controllo in questo modo? Intendo dire la porzione di codice del try-catch interno.


codice:
try {		
	int opzione;		
	String tmpString="";			
	int tmpInt=-1;			
	boolean test=false;		
	do{	
		System.out.println("0. Esci dal menù");
		System.out.println("1. Fai questo");
		System.out.println("2. Fai quest'altro");		
		// INIZIO CONTROLLO OPZIONE		
		do{			
			System.out.print("\nCosa vuoi fare? ");
			tmpString=tastiera.readLine();			
			try{				
				tmpInt=Integer.parseInt(tmpString);				
				test=true;				
				if(tmpInt<0 || tmpInt>2){					
					System.out.println("\tATTENZIONE: valore non corretto!");					
					test=false;	
				}	
			}	
			catch(NumberFormatException e){		
				System.out.println("\t"+e.getMessage() + " is not a integer");
				test=false;
			}	
		}while(!test);			
		// FINE CONTROLLO OPZIONE		
		opzione=tmpInt;
		if(opzione==1){}
		if(opzione==2){}		
	}while(opzione!=0);
	System.out.println("\nFine programma");	
}catch(Exception e){
	System.out.println("Errore!\n"+e.getMessage());		
}

Adesso non guardate il codice per com'è oppure lo switch anziché la serie di if visto che ho tolto una marea di istruzioni.


Ovviamente è molto più utile fare un metodo public int intero(inf,sup), se deve essere imitato tra due numeri (0 e 2 in questo caso), che possa essere richiamato ovunque (lo metterò all'interno di una mia classe functions) ma come faccio a farlo con le eccezioni?
Oppure conviene modificare il setter di quel campo?
Si possono mettere più catch per dire di che errore si tratta?

Non sto chiedendo il codice, ho solo bisogno di capire il funzionamento corretto. Grazie!