Erro em captura de bloco Try/Catch

Tenho um pequeno código que calcula o IMC utilizando JOptionPane. Utilizo uma classe principal que roda o main e uma secundária para cuidar das entradas e saídas do programa chamada MyIO. Dentro dessa classe meu método readDouble recebe como parâmetro uma string com a mensagem do dado solicitado (altura ou peso), converte a saída do JOptionPane(String) para double e retorna esse valor.
Ao colocar ponto para a altura ex.(1.76), funciona. Porém com a vírgula recebo um NumberFormatException . Tentei tratar essa exceção usando try/catch mas o mesmo não é “capturado” pelo catch ocasionando falha na execução. o que pode ser?

	public static double readDouble(String message) { //método que recebe uma string com a mensagem solicitando o dado (altura ou número)
		String input = ""; //inicio variável que possa ser usada em cada bloco try/catch
		double value = 0; //inicio variável ...
		try {
			input = JOptionPane.showInputDialog(message); // pede o dado 
			value = Double.parseDouble(input);		//converte o input em variável tipo double 
		} catch (InputMismatchException e) {
			 write("Use ponto ao invés de vírgula"); //exception
			 readDouble(message);                    //invoca novamente o método
		} catch (NumberFormatException e) {
			double newValue = Double.parseDouble(input); //caso use vírgula definindo entrada para float que causa NumberFormatException converte float para double
			value = newValue;                            //define valor convetido para variável "global"
		}	
		return value;
	}

É que você não está tratando nada no seu catch, está tentando converter o número novamente, sem ter digitado outra vez.
:person_shrugging:t2:

1 curtida