Nós vimos o bloco try-catch quando desenvolvemos o arquivo ReadFile.java.
ReadFile.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
import java.net.URL; import java.io.File; import java.io.FileReader; import java.io.Reader; import java.io.BufferedReader; public class ReadFile{ final String toXmas1 = "/txt/toXmas01.txt"; public void caminho(){ System.out.println(getClass().toString()); } public void absoluteFilePath(){ System.out.println(getClass().getResource(toXmas1)); } public URL absoluteFilePathURL(){ URL url = getClass().getResource(toXmas1); return url; } public File retornaFile(){ URL url = getClass().getResource(toXmas1); File file = new File(url.getPath()); return file; } public void readFile(){ try{ FileReader inputFile = new FileReader(retornaFile()); int aCh; String mensagem = ""; while((aCh = inputFile.read()) != -1){ mensagem += (char) aCh; } System.out.println(mensagem); }catch(Exception e){ System.out.println("ERRO readFile " + e.getMessage()); } } public String readMessage()throws Exception{ String line = null; try{ Reader targetReader = new FileReader(retornaFile()); BufferedReader bufferedReader = new BufferedReader(targetReader); line = bufferedReader.readLine(); bufferedReader.close(); }catch(Exception e){ System.out.println("Arquivo de texto da mensagem não foi encontrado"); } return line; } } |
A intensão do bloco try-catch checa uma exceção com um manipulador de exceções, com isso o programa irá continuar a execução mesmo que ocorra um erro.
No projeto Adivinha o Número, o jogador precisam inserir um número inteiro. O JOptionPane.ShowInputDialog() aceita entrada e retorna uma String, a qual será convertida para o tipo int.
Uma String válida para a conversão apenas deve ter números positivos ou negativos. O Java fornece um NumberFormatException para capturar qualquer erro que tenha uma String inválida, tais como, uma String vazia, nula, sem nenhum caractere e assim por diante.
Além disso, depois da declaração para capturar os dados de entrada, o método isQualifiedData aplica o bloco try-catch para verificar a entrada de dados.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public boolean isQualifiedData(String inputStr){ try{ guessedInt = Integer.parseInt(inputStr); }catch(NumberFormatException ex){ System.out.println("\nO formato da entrada de dados " + inputStr + " está errado." +" Tente novamente. \n"); return false; } boolean inRange = isInRange(); if(inRange){ return true; }else{ return false; } } |
O primeiro passo é chamar Integer.parseInt(inputStr) para converter o inputStr de uma String para um inteiro. O método parseInt() irá capturar qualquer elemento ilegal e lançar o NumberFormatException.
Se a exceção acontecer, nós simplesmente iremos mostrar a mensagem na tela e retornar false para que o JOptionPane abra novamente para o usuário digitar novamente.
Contudo, mesmo que o usuário coloque um dado não válido, o programa continua a execução. Se o InputStr não tiver nenhum problema e converter para um inteiro, então o método isInRange será chamado. Ainda não criamos esse método.
Fonte: Learning Java with Games
Deixe um comentário