pessoal, estou tentando criar uma exceção devido a uma divisão por zero da seguinte maneira:
import java.util.InputMismatchException;
import java.util.Scanner;
public class exemploExcecao2
{
public static void main(String args[])
{
Scanner scanner = new Scanner(System.in);
try
{
System.out.print("Entre com um inteiro ");
int numero1 = scanner.nextInt();
System.out.print("Entre com um inteiro ");
int numero2 = scanner.nextInt();
int resultado = numero1 / numero2;
System.out.printf("O resultado da divisão é: %f\n", resultado);
}
// tratamento de exceções
catch(ArithmeticException arithmeticException)
{
System.err.printf("\nExceção: %s", arithmeticException);
System.out.println("Não divida por zero cara!!!");
}
catch(InputMismatchException inputMismatchException)
{
System.err.printf("\nExceção %s", inputMismatchException);
System.out.println("Cara... Entre com o tipo certo de dados né!!!");
}
finally
{
System.out.println("Pra dizer que eu não executei, estou aqui!!!!!!");
}
}
}
dessa forma funciona certinho… quando eu entro no denominador um zero ele captura a exceção e tudo funciona como eu planejei. No entanto, quando eu uso double no lugar de int, ou seja, da seguinte maneira:
import java.util.InputMismatchException;
import java.util.Scanner;
public class exemploExcecao2
{
public static void main(String args[])
{
Scanner scanner = new Scanner(System.in);
try
{
System.out.print("Entre com um inteiro ");
double numero1 = scanner.nextDouble();
System.out.print("Entre com um inteiro ");
double numero2 = scanner.nextDouble();
double resultado = numero1 / numero2;
System.out.printf("O resultado da divisão é: %f\n", resultado);
}
// tratamento de exceções
catch(ArithmeticException arithmeticException)
{
System.err.printf("\nExceção: %s", arithmeticException);
System.out.println("Não divida por zero cara!!!");
}
catch(InputMismatchException inputMismatchException)
{
System.err.printf("\nExceção %s", inputMismatchException);
System.out.println("Cara... Entre com o tipo certo de dados né!!!");
}
finally
{
System.out.println("Pra dizer que eu não executei, estou aqui!!!!!!");
}
}
}
simplismente é imprimido como resultado da divisão: Infinity, o que mostra que a exceção ArithmeticException não funcionou nesse caso. Gostaria de saber o por que só esta funcionando com int, logo que uma divisão 0/0 é identica matematicamente a 0/0,0000.