Le mot-clé assert en Java

Rupam Yadav 12 octobre 2023
  1. Utiliser assert comme condition en Java
  2. Utilisation de assert condition : expression en Java
  3. pour vérifier si la partie inaccessible du code est réellement inaccessible
  4. en cas d’invariants internes
Le mot-clé assert en Java

En Java, vous pouvez utiliser le mot-clé assert pour activer les assertions. Cette fonction est utilisée pour tester nos hypothèses sur le programme. Il existe deux manières d’utiliser les assertions en Java, et nous allons les aborder dans cet article.

Utiliser assert comme condition en Java

Une assertion est le moyen le plus rapide et le plus simple de détecter et de corriger les bogues dans un programme. Une assertion est supposée vraie lorsqu’elle est exécutée. Sinon, cela renverrait une erreur d’assertion si elle est fausse.

Ici, la condition assert est une expression booléenne.

public class JavaAssertCheck {
  public static void main(String args[]) {
    String[] names = {"John", "Mary", "David"};
    assert names.length == 2;
    System.out.println("There are " + names.length + "  names in an array");
  }
}

Production

There are 3 names in an array

Les assertions sont désactivées ; ainsi, ce programme sera compilé et exécuté sans afficher aucune erreur. Mais si les assertions sont activées et que la condition est fausse, JVM renvoie immédiatement une AssertionError et arrête le programme.

Exception in thread
    "main" java.lang.AssertionError at JavaAssertCheck.main(JavaAssertCheck.java : 5)

Utilisation de assert condition : expression en Java

Dans ce format d’assertion, l’expression est passée au constructeur de AssertionError si la condition est évaluée comme fausse. Si les assertions sont activées et que l’hypothèse indiquée ci-dessous est fausse, alors l’AssertionError avec l’expression passée en tant que message détaillé est affichée.

Ce message aide à identifier correctement l’erreur et à corriger l’erreur.

public class JavaAssertCheck {
  public static void main(String args[]) {
    String[] names = {"John", "Mary", "David"};
    assert names.length == 2 : "The assertion condition is false.";
    System.out.println("There are " + names.length + "  names in an array");
  }
}

Production

Exception in thread "main" java.lang.AssertionError
    : The assertion condition is false.at JavaAssertCheck.main(JavaAssertCheck.java : 5)

Ici, il montre certaines conditions dans lesquelles nous pouvons utiliser le concept d’assertion en Java.

pour vérifier si la partie inaccessible du code est réellement inaccessible

public void unReachableCode() {
  System.out.println("Unreachable Code");
  return;
  assert true;
}

Si vous placez une hypothèse à un endroit où vous pensiez que le flux ne devrait pas être atteint, cette fonction provoquera une erreur lors de la suppression de l’instruction inaccessible.

en cas d’invariants internes

Avant que les assertions ne soient disponibles, de nombreux programmeurs utilisaient des commentaires pour documenter leurs hypothèses sur le programme. Comme indiqué ci-dessous dans l’instruction if multidirectionnelle, nous pourrions vouloir écrire quelque chose expliquant notre hypothèse sur le cas else.

public class JavaAssertCheck {
  public static void main(String args[]) {
    int n = 37;
    if (n % 3 == 0)
      System.out.println("n % 3 == 0");
    else if (n % 3 == 1)
      System.out.println("n % 3 == 1");
    else
      assert n % 3 == 2 : "Assumption is false. " + n;
  }
}

Les assertions ne doivent pas être utilisées dans les méthodes publiques pour vérifier les arguments passés car l’utilisateur peut les donner lui-même ; ainsi, il peut échouer et conduire à une AssertionError. N’utilisez PAS d’assertions pour gérer la tâche dont votre application a besoin pour fonctionner correctement. Un exemple consiste à supprimer des éléments nuls d’une liste.

En règle générale, l’expression contenue dans une affirmation doit être exempte d’effets secondaires.

Auteur: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn