O que acontece com o fluxo do programa quando uma exceção é executada?
O programa continua funcionando? Já passei por isso, as vezes a tela do JFrame não é redesenhada…, mas ainda não sei o que realmente acontece.
vi também que métodos que estão logo após o lançamento da exceção não são executados.
É isso mesmo que você percebeu: a execução do programa pára… em termos…
Mas se você usar um bloco try catch, as linhas de código após a que deu exceção são ignoradas, o bloco catch e finally executados e depois vai para a primeira linha após o bloco. Isso se você tratar a exceção no catch, claro ! Senão a execução pára até achar alguém que trate a exceção ou chegar no main e terminar.
Outra coisa: se tiver no caminho um return, encerra o método, ou System.exit(), encerra o programa.
[quote]senão a execução pára até achar alguém que trate a exceção ou chegar no main e terminar.
Outra coisa: se tiver no caminho um return, encerra o método, ou System.exit(), encerra o programa.[/quote]
Como assim… até que alguém trate a exceção? Se não tiver sido tratada no código fonte tem como ser tratada?
E como seria chegar no main e terminar? Digamos que tivesse uma exceção no método a. Então o b e o c seriam executados e o programa terminaria?
main(){
a();
b();
c();
}
No meu caso, que é programa swing, como ficaria? O programa ficaria rodando? Ex: eu mando salvar. dá a exceção que não foi tratada. E ai? Vai mandar para a saída padrão e o programa continua funcionando como se não tivesse acontecido nada?
Ao contrário, se a() der exceção, b() e c() não são executados.
No seu programa swing a mesma coisa, ele termina.
Acho que me expliquei mau, o que quis dizer na verdade é que a exceção espera que algum método a trate e se nenhum tratar o programa termina.
Veja bem, imagine que main() chama a() que chama b() que chama c().
Se der exceção em c() e não for tratada aí, ela será propagada para o método que chamou: b().
Se b() não tratar também, propaga para a() e assim por diante até chegar no main(), que se não tratar também, termina a execução do seu programa.
Será que agora consegui ser mais clara ?