Page 1 sur 1

Question post-assertion et exception

Publié : 17 déc. 2020 2:45
par charp_n1
Bonjour à tous,

Je comprends le principe de test de l'exception dans une post-assertion (diapositive 59 du 08/12 - patron décorateur), mais je ne saisis pas bien ce qu'il se passe vraiment derrière un throw puis un finally.

Code : Tout sélectionner

public void ajouter(int element){
    InitialiserLesVariables();// i.e. tailleAvant… 

    assert pre_assertion(element);
    Exception cause =null;
    try{
      super.ajouter(element); // la liste est bornée … 
                              // alors une exception est possible
    }catch(Exception e){
      cause = e;
      throw e;                // l’exception est propagée	===> ##### EN DEUXIEME ?
    }finally{							
      assert post_assertion(cause);				===> ##### EN PREMIER ?
    }
Je croyais qu'un throw déroutait immédiatement le programme, ce qui empêcherait dans l'exemple ci-dessus de passer dans la post-assertion.
Cela signifie-t-il qu'on exécute d'abord le finally, ensuite le throw ?


J'espère avoir été clair.
Merci pour vos réponses.

Re: Question post-assertion et exception

Publié : 17 déc. 2020 11:13
par douinj
Bonjour, oui, le finally est exécuté avant la propagation de l’exception, quoiqu'il arrive (une exception ou non)

Bonne post-assertion

https://docs.oracle.com/javase/tutorial ... nally.html

The finally block always executes when the try block exits. This ensures that the finally block is executed even if an unexpected exception occurs. But finally is useful for more than just exception handling — it allows the programmer to avoid having cleanup code accidentally bypassed by a return, continue, or break. Putting cleanup code in a finally block is always a good practice, even when no exceptions are anticipated.

Re: Question post-assertion et exception

Publié : 17 déc. 2020 12:02
par charp_n1
Merci