A palavra reservada assert (premissa) representa um recurso que permite ao desenvolvedor testar condições que deveriam ser verdadeiras. Esse recurso foi introduzido na versão 1.4 do Java e apesar de bastante interessante ainda é pouco utilizado.
Existem duas sintaxes possíveis sintaxes para o comando assert:
assert expressão1; - Essa é a sintaxe resumida, para a expressão1 é permitido apenas operações que retorne um valor booleano;
assert expressão1: expressão2; - Na sintaxe completa a expressão1 segue o mesmo princípio da sintaxe resumida, mas, a expressão2 deve retornar um valor que será impresso caso a expressão1 seja falsa.
Uso indicados do comando assert:
Para forçar restrições de parâmetros em métodos privados – não existe a indicação do uso de assertions para validação de métodos públicos, já que nesses, podem receber “qualquer valor” de outros objetos.
Checar saídas de métodos – de acordo com a entrada passada a um método um valor de saída é esperado, essa é uma boa situação para a utilização de um assertion.
Abaixo um exemplo da utilização de uma assertion:
private boolean candidato(String nome, int idade) {
assert (idade 45): “Idade inválida.”;//restante do código do métodoreturn true;
}
Quando esse método private boolean candidato(String nome, int idade) for chamado com o software em produção os parâmetros já estariam validados por outras classes da regra de negócio, portanto, o desenvolvedor supõe que o método candidato nunca teria idade fora do intervalo entre 18 e 45 anos, porém no desenvolvimento é interessante efetuar essa verificação debug.
Sempre que um código com assert é executado e a expressão1 é falsa é lançado um AssertionError que é a indicação de um problema na “premissa” utilizada pelo programador. Um AssertionError nunca deve ser capturado pelo programador.
A checagem de assertions está desabilitada por padrão, as linhas com as instruções de assert são inseridas no código compilado são executadas somente se passado o parâmetro enabledassertions no interpretador Java.
Somente lembrando, Assertions não são mecanismos de tratamento de erros, seu propósito é melhorar a disciplina na fase de desenvolvimento.
0 comentários: