La parola chiave assert in Java

Rupam Yadav 12 ottobre 2023
  1. Utilizzo di assert come condizione in Java
  2. Utilizzo di assert condition : expression in Java
  3. per verificare se la parte irraggiungibile del codice è effettivamente irraggiungibile
  4. in caso di invarianti interni
La parola chiave assert in Java

In Java, puoi utilizzare la parola chiave assert per abilitare le asserzioni. Questa funzione viene utilizzata per testare le nostre ipotesi sul programma. Ci sono due modi in cui possiamo usare le asserzioni in Java, e le affronteremo in questo articolo.

Utilizzo di assert come condizione in Java

Un’asserzione è il modo più rapido e semplice per rilevare e correggere i bug in un programma. Si presume che un’asserzione sia vera quando viene eseguita. In caso contrario, genererebbe un errore di asserzione se è falso.

Qui, la condizione assert è un’espressione booleana.

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");
  }
}

Produzione

There are 3 names in an array

Le asserzioni sono disabilitate; quindi, questo programma verrà compilato ed eseguito senza mostrare alcun errore. Ma se le asserzioni sono abilitate e la condizione è falsa, JVM lancia immediatamente un AssertionError e interrompe il programma.

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

Utilizzo di assert condition : expression in Java

In questo formato di asserzione, l’espressione viene passata al costruttore di AssertionError se la condizione viene valutata come falsa. Se le asserzioni sono abilitate e l’assunzione come mostrato di seguito è falsa, allora viene mostrato l’AssertionError con l’espressione passata come messaggio dettagliato.

Questo messaggio aiuta a identificare correttamente l’errore e a correggere l’errore.

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");
  }
}

Produzione

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

Qui, mostra alcune condizioni in cui possiamo utilizzare il concetto di asserzione in Java.

per verificare se la parte irraggiungibile del codice è effettivamente irraggiungibile

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

Se inserisci un presupposto in una posizione in cui ritenevi che il flusso non dovesse essere raggiunto, questa funzione richiederà un errore durante la rimozione dell’istruzione irraggiungibile.

in caso di invarianti interni

Prima che le asserzioni fossero disponibili, molti programmatori usavano i commenti per documentare le loro ipotesi sul programma. Come mostrato di seguito nell’istruzione if multidirezionale, potremmo voler scrivere qualcosa che spieghi la nostra ipotesi sul caso 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;
  }
}

Le asserzioni non dovrebbero essere usate nei metodi pubblici per controllare gli argomenti passati perché l’utente può fornirli da solo; pertanto, potrebbe non riuscire e portare a un AssertionError. NON utilizzare asserzioni per gestire l’attività richiesta dall’applicazione per funzionare correttamente. Un esempio è la rimozione di elementi null da un elenco.

Di norma, l’espressione contenuta in un’asserzione dovrebbe essere priva di effetti collaterali.

Autore: 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