Originariamente inviato da Zero-2
SI che puoi gestire l'eccezzione sul tutto lo switch

codice:
boolean flag=true;
do{
try{
switch(a){
case .. metodo1();
case ...metodo2();
case ...metodo1();
....
....
}
}catch(Exception r){
if(gestibile)gestisci();
else
flag=false;}
}while(flag);
metodo1 supponiamo lanci un eccezione , tu la gestisci
e riprendi il ciclo dallo switch.
Se la variabile a , supponendo che conteneva la condizione che ti ha fatto entrare nel primo case , non cambia , tu rientrerai sempre nel primo case .
è vero, però dipende da dove valorizzo la varibile su cui poi si basa lo switch giusto?
perchè se questa sta fuori il "do" allora funziona come dici tu, solo che va all'infinito, nel senso che poi non si può più uscire dal case (perchè la variabile non può più essere modificata).
se invece la valorizzazione sta dentro allora non rientra più nel case che ha generato l'eccezione ma mi richiede di rivalorizzare la variabile.
dico bene? (ho provato e mi succede così!)