package br.edu.ifpb; import java.util.Scanner; // vide: https://pempek.net/articles/2013/11/16/assertions-or-exceptions/ public class AssertionTest { public static void main( String[] args ) { // sintaxe: // assert ; // assert : ; // use asserções para documentar e verificar premissas quanto à lógica do código // use para verificar pós e pré-condições // se for false, um AssertionError é lançado // o segundo argumento é convertido para uma String e usada como texto // na mensagem de AssertionError // não use assertions para: // testar parâmetros de métodos // usar testes de assertions que produzam efeitos colaterais // asserções são desabilitadas por padrão e são voltadas para o desenvolvedor // devem ser não recuperáveis, fatais, e empregadas nas fases de desenv e teste // se não habilitar o -ea na VM options, // o programa rodará normalmente, sem exceções // mas, se -ea for habilitado: // Exception in thread "main" java.lang.AssertionError // at br.edu.ifpb.AssertionTest.main(br.edu.ifpb.AssertionTest.java:10) // não precisa recompilar o código para passar -ea String e1 = lerEntrada( "Digite o número" ); assert isEntradaNumérica( e1 ); // se for false, então java.lang.AssertionError String e2 = lerEntrada( "Digite outro número" ); assert isEntradaNumérica( e2 ) : "A entrada " + e2 + " não é um número!"; // se for false, então java.lang.AssertionError System.out.println( "A soma: " + Double.parseDouble( e1 ) + Double.parseDouble( e2 ) ); System.out.println( "Fim" ); } static String lerEntrada( String frase ) { System.out.print( frase + ": " ); Scanner s = new Scanner( System.in ); String entrada = s.nextLine(); return entrada; } static boolean isEntradaNumérica( String entrada ) { try { Double.parseDouble( entrada ); return true; } catch ( NumberFormatException e ) { return false; } } }