Skip to content

Instantly share code, notes, and snippets.

@cesarvasconcelos
Last active September 21, 2019 10:52
Show Gist options
  • Select an option

  • Save cesarvasconcelos/edb54f588b263f3fac9cdbf3f0a8f40e to your computer and use it in GitHub Desktop.

Select an option

Save cesarvasconcelos/edb54f588b263f3fac9cdbf3f0a8f40e to your computer and use it in GitHub Desktop.
Exemplo simples de asserções
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 <boolean_expression>;
// assert <boolean_expression> : <detail_expression>;
// use asserções para documentar e verificar premissas quanto à lógica do código
// use para verificar pós e pré-condições
// se <boolean_expression> 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;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment