Last active
September 21, 2019 10:52
-
-
Save cesarvasconcelos/edb54f588b263f3fac9cdbf3f0a8f40e to your computer and use it in GitHub Desktop.
Exemplo simples de asserções
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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