boa noite em decorrer a esse curso eu tive dificuldades em entender exceções , throw , unchecked e checked como elas funcionam
boa noite em decorrer a esse curso eu tive dificuldades em entender exceções , throw , unchecked e checked como elas funcionam
Olá Murilo
Exceções não checadas (unchecked) representam defeitos no programa (bugs).
São subclasses de RuntimeException e são normalmente implementadas usando IllegalArgumentException, NullPointerException ou IllegalStateException.
Um método não é obrigado a estabelecer uma política para as exceções não checadas lançadas por sua execução (e quase sempre nunca o fazem).
Exemplo de exceção não checada:
int num1 = 10;
int num2 = 0;
int res = 0;
res = num1 / num2; // ArithmeticException: / by zero;
Possível solução:
int num1 = 10;
int num2 = 0;
int res = 0;
try {
res = num1 / num2;
} catch (ArithmeticException ex) {
Logger.getLogger(Teste.class.getName()).log(Level.SEVERE, null, ex);
}
Exceções checadas (checked) representam condições inválidas em áreas fora do controle imediato do programa (problemas de entradas inválidas do usuário, banco de dados, falhas de rede, arquivos ausentes).
São subclasses de Exception.
Um método é obrigado a estabelecer uma política para todas as exceções checadas lançadas por sua implementação (ou passar a exceção checada mais acima na pilha, ou manipulá-la de alguma forma).
Alguns exemplos de exceções checadas:
FileInputStream FIS = null;
FIS = new FileInputStream("D:/arquivo.txt"); // erro: unreported exception FileNotFoundException;
int x;
while ((x = FIS.read()) != 0) { // erro: unreported exception IOException;
}
Possível solução:
FileInputStream FIS = null;
try {
FIS = new FileInputStream("D:/arquivo.txt");
} catch (FileNotFoundException ex) {
Logger.getLogger(Teste.class.getName()).log(Level.SEVERE, null, ex);
}
int x;
try {
while ((x = FIS.read()) != 0) {
}
} catch (IOException ex) {
Logger.getLogger(Teste.class.getName()).log(Level.SEVERE, null, ex);
}