Pessoal, me tirem essa minha dúvida, para tratar exceção, tanto na escrita e tanto na leitura usa-se
catch(IOException ex){…
ou
catch(Exception e ){…
Obs: Uso Netbeans e vi o primeio exemplo usando eclipse, tem alguma diferença?
Java Arquivo
3 Respostas
Isso depende da exceção que você quer capturar e tratar, lembrando que você pode tratar ambos. Se você precisa fazer alguma coisa ao receber a exceção (por exemplo, avisar que o arquivo não pode ser escrito), mas quer ignorar todas as demais exceções, então capturar IOException é melhor que capturar Exception simplesmente (que pode ser gerada por outras coisas que não um problema com o arquivo, que dispara IOException).
Veja esses exemplos:
- https://stackoverflow.com/questions/5979501/in-java-what-is-the-difference-between-catch-a-generic-exception-and-a-specific
- https://stackoverflow.com/questions/21938/is-it-really-that-bad-to-catch-a-general-exception
Abraço.
posso criar várias exceções certo ?
Você pode capturar várias exceções em sequências, indo da mais específica para a mais genérica:
try{
int a[]=new int[5];
a[5]=30/0;
}
catch(ArithmeticException e){System.out.println("task1 is completed");}
catch(ArrayIndexOutOfBoundsException e){System.out.println("task 2 completed");}
catch(Exception e){System.out.println("common task completed");}
System.out.println("rest of the code...");
}
Tirado de: https://www.javatpoint.com/multiple-catch-block-in-java
E, a partir do Java 7, pode usar uma sintaxe mais enxuta, caso queira capturar exceções em um mesmo bloco:
try {
...
} catch( IOException | SQLException ex ) {
...
} catch( Exception e) {
...
}
Mas a ideia é que você capture as exceções relevantes para o seu código. Não faz muito sentido capturar SQLException ao fazer uma operação matemática, por exemplo.
Recomendo a leitura: https://www.caelum.com.br/apostila-java-orientacao-objetos/excecoes-e-controle-de-erros/
Abraço.