Pessoal,
depois de estudar bastante sobre as exceções no Java, fiz uns exemplos de códigos pra entender e fiquei com uma dúvida.
Criei uma classe de Teste, na qual tem um método main que chama o metodo estático 1, que por sua vez, chama o método estático 2:
public class TesteErro {
public static void main(String[] args) {
System.out.println("Início de main.");
metodo1();
System.out.println("Fim de main.");
}
static void metodo1() {
System.out.println("Início de m1.");
metodo2();
System.out.println("Fim de m1.");
}
static void metodo2(){
System.out.println("Início de m2.");
int[] array = new int[10];
try {
for (int i=1; i<=15;i++){
array[i]=i;
System.out.println(i);
}
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("O Erro foi: "+e);
}
System.out.println("Fim de m2.");
}
}
OBS: no metodo2, é criado um array de 10 possicoes, porém eu insiro 15.
Desta forma, coloquei um try catch pra tratar esse erro. Então quando ele ocorre, o processamento continua normal, e chega a gerar a mensagem de fim do método2.
Mas não entendi o que ocorre com o Throws, pois ouvi falar q ele "empurra" o erro pro método que o chamou.
Daí eu coloquei um theows ArrayIndexOutOfBoundsException no método2 e o try catch eu tratei no método1.
Porém no resultado, não aparece a mensagem de fim do método 2. E mesmo qdo eu coloco o try catch só no método1 e não ponho o throws no metodo2, o sistema mostra o erro da mesma forma.
Pensei que o throws jogava o erro para o método que o chamou, porém não interrompia o processamento (gerando a msg de término do metodo2). Mas mesmo qdo não coloco o throws e ponho o try no metodo que chama, esse método encontra o erro...
Alguém pode me falar o que aconteceu neste caso e tentar clarear minha mente qto a real função do throws e qdo devo usá-lo?
muito obrigado