public class Excecao {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
System.out.println("sistema que calcula a divisão de 2 números.\n");
try {
System.out.println("informe o primeiro valor: ");
int a = teclado.nextInt();
System.out.println("informe o segundo valor: ");
int b = teclado.nextInt();
double c =a/b;
System.out.println("o resultado da divisão é: " + c);
}
catch(InputMismatchException e){
System.out.println("número inválido, digite um número inteiro.");
}
catch(ArithmeticException e2) {
System.out.println("não é possível dividir por 0");
}
}
}
como faço para que mesmo depois da mensagem o usuário continuar digitando um número até não aparecer mais o aviso de erro?
A única maneira de fazer isso é incluir o bloco todo dentro de um laço de repetição (for/while/do-while).
Porém, essa não é uma boa prática, seria mais interessante fazer o contrário: incluir o laço dentro do bloco try. Como isso resultaria no mesmo comportamento (digitar um valor > lançar exceção > capturar e tratar > apresentar erro > finalizar a execução), não é o que você quer fazer.
Cara, o seguinte, você usa while(true){}, envolvendo todo o try-catch
e após a linha impressão do resultado (se chegou nessa linha quer dizer que ocorreu tudo certo e a mensagem de erro não foi mais exibida) você simplesmente coloca um break;
Vai na fé que dá certo, rsrs