Salut,

Envoyé par
®om
L'avantage par rapport aux exceptions, c'est qu'on peut l'activer ou le désactiver à l'exécution (et c'est pluc concis)...
L'objectif n'est pas le même : les exceptions permettent de traiter des erreurs qui pourraient se produire, alors que les assert vérifient que certaines conditions soit bien vérifié...

Envoyé par
®om
Par contre, est-ce que c'est possible de le désactiver directement à la compilation (pour que les assertions -transformées en exceptions- ne soient pas contenues dans le byte code)?
Ce n'est pas possible, tout simplement parce qu'il est prévu la possibilité de modifier l'activation des assertions au cas par cas avant le chargement des classes via le ClassLoader. Si tu supprimes les assertions du bytecode ce ne sera plus possible...

Envoyé par
®om
C'est plus par curiosité que par réelle nécessité, le test d'un booléen étant très rapide

Je pense même que la JVM doit completement supprimé le bout de code lorsqu'elle le compile en natif...
D'ailleurs tu peux même le faire au niveau du compilateur si tu veux vraiment supprimer les assert :
public static final boolean ENABLE_ASSERT = true;
if (ENABLE_ASSERT) assert index >= 0 && index < model.getSize() : "L'index doit être cohérent."
En passant ENABLE_ASSERT à false et en recompilant le tout, tu n'auras plus d'asser dans le bytecode 
a++
Partager