Assertions en Java

Débugger une application Java

Ce site ne sera plus alimenté de contenu après août 2014. Tous les nouveaux articles seront redigés pour www.waitingforcode.com

Les assertions en Java sont des bouts de code qui permettent au développeur de s'assurer d'une exécution correcte de son application.

L'utilisation des assertions se résume à des fragments de code qui, à priori, ne peuvent pas être incorrects. On peut s'imaginer la situation où l'on gère le nom du jour avec une instruction switch :

afficher le code

En lançant le code avec les paramètres -ea (java -ea NameOfMyClass; ea signifie -enableassertions), on reçoit une exception :

Exception in thread "main" java.lang.AssertionError: Incorrect value for dayName relationship at Assertions.main(Assertions.java:7)

Grâce à cet exemple on a pu voir le syntaxe de l'expression assert qui se présente de la manière suivante :

  assert boolean_test : string_result;

Si boolean_test est vrai, le code va s'exécuter normalement. Dans le cas contraire, une exception AssertionError sera captée.

On peut les comparer à la gestion des exceptions en Java car elles font à peu près la même chose. Cependant, il ne faut pas remplacer les exceptions par les assertions. Ces dernières ont plutôt vocation d'être utilisées dans le cycle de développement et de débogage.

télécharger les fichiers d'exemple
Bartosz KONIECZNY Informations sur le langage

Une question ? Une remarque ?

*

*

Un conseil Symfony2

Un problème avec la définition des valeurs par défaut pour input type checkbox ?

Si vous rencontrez un problème avec la définition des valeurs par défaut pour un champ du type checkbox sous Symfony2, assurez-vous de la conformité des types de ces valeurs. Par exemple, le code suivant ne va pas fonctionner (le checkboxes ne seront pas sélectionnés pour les valeurs indiquées) :

  private $gifts = array(1 => 'apple', 2 => 'orange');
  public function setPreferedGifts($value = array())
  {
    $vals = array();
    foreach($value as $v => $val)
    {
      $vals[] = $val;
    }
    $this->preferedGifts = $vals;
  }
Par contre, le code suivant fonctionnera correctement (les checkboxes seront sélectionnés pour des valeurs passées dans la boucle foreach) :
  private $gifts = array(1 => 'apple', 2 => 'orange');
  public function setPreferedGifts($value = array())
  {
    $vals = array();
    foreach($value as $v => $val)
    {
      $vals[] = (int)$val;
    }
    $this->preferedGifts = $vals;
  }
Pour résumer, si le tableau avec les choix ($gifts dans l'exemple) contient les clés qui sont des integers, les valeurs par défaut doivent aussi être des integers.