Baixe o app para aproveitar ainda mais
Prévia do material em texto
Asserções Profa. Dra. Ieda Hidalgo E-mail: iedahidalgo@ft.unicamp.br Definição Asserção é um mecanismo que permite ao programador testar hipóteses (que ele assume que não irão acontecer uma vez que o programa esteja completo) durante o desenvolvimento de um sistema. Vantagens do uso de Asserções Deixam o código mais claro e menor. Ficam inativas a não ser que sejam especificamente habilitadas. Não causam impacto quando o programa é entregue. Não impõem que o código da hipótese testada seja removido manualmente na versão final do sistema. Exemplo private void metodo(int num) { // gera um AssertionError caso o teste não seja verdadeiro assert (num>=0); // resto do codigo supondo que num é positivo } Mecanismo de Asserções 1. Faz-se a asserção de que alguma hipótese é verdadeira. 2. Em caso positivo, o código continua normalmente. 3. Em caso negativo, a execução é interrompida e gera um AssertionError (que não deve ser tratado no código). Detalhes sobre a Causa do AssertionError Para mais informação sobre a causa do AssertionError, pode-se utilizar uma segunda cláusula, separada por “:”, cujo objetivo é apresentar detalhes sobre o AssertionError: private void método(int x, int y) { assert (y > x): "y vale " + y + " e x vale " + x; // mais código assumindo que y é maior do que x } Asserções x Tratamento de Exceções Asserções são utilizadas para a depuração do programa. Ela evidencia erros de programação que provocam a interrupção da execução quando situações ditas "impossíveis" pelos desenvolvedores são atingidas. Tratamento de exceções desvia o fluxo de execução para uma rotina de tratamento. Nela, o programa pode tentar recuperar-se da situação de erro e prosseguir com a execução do sistema. Dicas para Utilização de Asserções Não utilize asserções para validar argumentos de um método público, uma vez que você não tem controle sobre como ele será chamado. Neste caso, o próprio método deve validar os argumentos que está recebendo, pois as asserções podem estar desabilitadas durante a execução. Não utilize expressões de teste que alteram o estado de um objeto. Como não é garantido que a expressão será executada, não é recomendado que seu código tenha um comportamento diferente dependendo das asserções estarem habilitadas ou não. Utilize asserções em métodos privados para checar casos que não devem acontecer durante a execução do programa.
Compartilhar