A palavra-chave assert em Java

Rupam Yadav 12 outubro 2023
  1. Usando assert como uma condição em Java
  2. Usando assert condition : expression em Java
  3. para verificar se a parte inacessível do código é realmente inacessível
  4. em caso de invariantes internos
A palavra-chave assert em Java

Em Java, você pode utilizar a palavra-chave assert para habilitar asserções. Esta função é usada para testar nossas suposições sobre o programa. Existem duas maneiras de usar asserções em Java e vamos abordá-las neste artigo.

Usando assert como uma condição em Java

Uma declaração é a maneira mais rápida e fácil de detectar e corrigir bugs em um programa. Uma asserção é considerada verdadeira quando executada. Caso contrário, ele geraria um erro de asserção se fosse falso.

Aqui, a condição assert é uma expressão 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");
  }
}

Resultado

There are 3 names in an array

As asserções estão desabilitadas; portanto, este programa será compilado e executado sem mostrar nenhum erro. Mas se as asserções estiverem ativadas e a condição for falsa, a JVM lança imediatamente um AssertionError e para o programa.

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

Usando assert condition : expression em Java

Neste formato de asserção, a expressão é passada para o construtor do AssertionError se a condição for avaliada como falsa. Se as asserções estiverem habilitadas e a suposição conforme mostrado abaixo for falsa, então o AssertionError com a expressão passada como uma mensagem detalhada é mostrado.

Esta mensagem ajuda a identificar corretamente o erro e a corrigi-lo.

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

Resultado

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

Aqui, ele mostra certas condições quando podemos utilizar o conceito de asserção em Java.

para verificar se a parte inacessível do código é realmente inacessível

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

Se você colocar uma suposição em qualquer local que achou que o fluxo não deveria ser alcançado, esta função irá exibir um erro ao remover a instrução inacessível.

em caso de invariantes internos

Antes que as afirmações estivessem disponíveis, muitos programadores usavam comentários para documentar suas suposições sobre o programa. Conforme mostrado abaixo na instrução if multifacetada, podemos querer escrever algo explicando nossa suposição sobre o 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;
  }
}

As asserções não devem ser usadas em métodos públicos para verificar os argumentos passados ​​porque o usuário pode fornecê-los por conta própria; assim, pode falhar e levar a um AsssertionError. NÃO use asserções para gerenciar a tarefa que seu aplicativo requer para funcionar corretamente. Um exemplo é a remoção de elementos nulos de uma lista.

Como regra, a expressão contida em uma afirmação deve estar livre de efeitos colaterais.

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