Exercice java traite le sujet suivant:
Bloc finally
Nous avons vu que le déclenchement d’une exception provoque un branchement inconditionnel au gestionnaire, à quelque niveau qu’il se trouve.
L’exécution se poursuit avec les instructions suivant ce gestionnaire. Cependant, Java permet d’introduire, à la suite d’un bloc try, un bloc particulier d’instructions qui seront toujours exécutées:
- soit après la fin “naturelle” du bloc try, si aucune exception n’a été déclenchée (il peut s’agir d’une instruction de branchement inconditionnel telle que break ou continue),
- soit après le gestionnaire d’exception (à condition, bien sûr, que ce dernier n’ait pas provoqué d’arrêt de l’exécution).
Ce bloc est introduit par le mot-clé finally et doit obligatoirement être placé après le dernier gestionnaire.
Bien entendu, cette possibilité n’a aucun intérêt lorsque les exceptions sont traitées localement.
Examinons ce petit Exercice java:
Quels résultats fournit ce programme ?
class Except extends Exception
{}
public class Finally
{ public static void f(int n)
{ try
{ if (n!=1) throw new Except () ;
}
catch (Except e)
{ System.out.println ("catch dans f - n = " + n) ;
return ;
}
finally
{ System.out.println ("dans finally - n = " + n) ;
}
}
public static void main (String args[])
{ f(1) ;
f(2) ;
}
}
Les instructions d’un floc finally associé à un bloc try sont toujours exécutées qu’il y ait eu ou non déclenchement d’une exception (sauf si le gestionnaire met fin à l’exécution). Ceci s’applique notamment au cas où un gestionnaire comporte une instruction return : le bloc finally est quand même exécuté auparavant.
En définitive, le programme fournit ceci :
dans finally - n = 1 catch dans f - n = 2 dans finally - n = 2
Termes de recherche utilisés:
- exercice sur bloc finally en exception
- exercices sur gestion dexception
- exercice de bloc out
- EXERCICE DEXCEPTION avec solution java
- exercice sur gestion d\exception en java
- exercices sur gestion dexception en java
