Pessoal sou novo no GUJ, não sei se aqui é o melhor lugar para eu postar dúvida sobre tratamento de erros e uma questão em particular. Se não for podem me indicar o local correto!
Estou querendo tentar a certificação para SCJP 6 em inglês.
Mas já vai minha questão retirada do ExamLab.
public class Tratamento {
public static void main() {
int i=4;
try{
i=i/0;
}catch(InterruptedException){
System.out.print("aioob ");
}catch(ArrayIndexOutOfBoundsException e){
System.out.print("aioob ");
}catch(RuntimeException e){
System.out.print("re ");
}catch(Exception e){
System.out.print("e ");
}
}
}
Este código apresenta erro de compilador porque a excessão InterruptedException deve ser levantada(throws) dentro do bloco Try. Procurei aqui no material que possuo e ainda ficou subentendido pra mim.
Classes que extendem de Throwable/Exception/MeusTratamentos devem ser levantadas. No caso como sei que a classe InterruptedException descende de uma dessas classes?
Errei a questão porque achei que InterruptedException não descendia diretamente de uma das citadas. Por causa do Exception não da pra identificar porque ArrayIndexOutofBoundsEXCEPTION não precisa ser tratada ou levantada.
Existe uma regra vinculada com o nome da exception ou é na decoreba mesmo!?
Espero que não esteja nebulosa minha dúvida.