Palavra-chave assert em Java
A palavra-chave assert
em Java é usada para fins de depuração. Ele permite que os desenvolvedores testem suposições sobre seu código. As asserções podem ser ativadas ou desativadas quando o programa é executado, o que as torna uma ferramenta flexível para capturar e diagnosticar erros durante o desenvolvimento.
Uso
A palavra-chave assert
é usada para criar uma asserção, que é uma afirmação que você acredita ser verdadeira em um determinado ponto do código. Se a afirmação for falsa, o tempo de execução do Java lançará um AssertionError
. Normalmente, as asserções são usadas para validar invariantes e suposições internas.
Sintaxe
assert expression;
assert expression : message;
expression
: Uma expressão booleana que você espera que seja verdadeira.message
: Uma mensagem de erro opcional que será exibida se a asserção falhar.
Exemplos
Exemplo 1: Afirmação básica
public class AssertExample {
public static void main(String[] args) {
int x = 5;
assert x > 0;
System.out.println("Assertion passed, x is greater than 0");
}
}
Neste exemplo, a asserção verifica se x
é maior que 0. Se x
não fosse maior que 0, você receberia um AssertionError
.
Exemplo 2: Asserção com mensagem
public class AssertWithMessage {
public static void main(String[] args) {
int y = -1;
assert y >= 0 : "y should be non-negative";
System.out.println("Assertion passed, y is non-negative");
}
}
Este exemplo inclui uma mensagem com a afirmação. Se y
não for maior ou igual a 0, a mensagem "y should be non-negative" (y deve ser não negativo) será exibida junto com AssertionError
.
Exemplo 3: Ativação de asserções
public class EnableAssertions {
public static void main(String[] args) {
int z = 10;
assert z < 5 : "z should be less than 5";
System.out.println("This line will not execute if assertion fails");
}
}
Para ativar as asserções, execute o programa com o sinalizador -ea
(enable assertions):
java -ea EnableAssertions
Se as asserções não estiverem ativadas, a asserção será ignorada e o programa será executado normalmente.
Dicas e práticas recomendadas
- Uso para invariantes internas: Use asserções para verificar invariantes internas e suposições dentro do seu código, não para validação de entrada do usuário ou outras verificações externas.
- Ativar durante o desenvolvimento: Ative as asserções durante o desenvolvimento e os testes para detectar bugs com antecedência. Eles podem ser desativados na produção por motivos de desempenho.
- Não use para efeitos colaterais: Evite usar asserções para efeitos colaterais, pois elas podem ser desativadas no tempo de execução. O programa não deve depender de asserções para executar tarefas críticas.
- Forneça mensagens significativas: Ao usar asserções com mensagens, forneça mensagens significativas e descritivas para facilitar a depuração.
- Evitar em métodos públicos: Evite usar asserções em métodos públicos para verificação de argumentos; em vez disso, use exceções.
Equívocos comuns
- Asserções na produção: Há um equívoco comum de que as asserções devem ser usadas no código de produção. As asserções são principalmente uma ferramenta de desenvolvimento e geralmente devem ser desativadas na produção para evitar problemas de desempenho.
- Asserções vs. Exceções: As asserções não substituem as exceções. Use exceções para o tratamento de erros, especialmente para argumentos de métodos públicos e validação de entrada do usuário.
public void setAge(int age) {
if (age < 0) {
throw new IllegalArgumentException("Age cannot be negative");
}
this.age = age;
}