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?
Oppure è meglio usare opzione=scanner.nextInt()?


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