1
resposta

try / catch

Segue um trecho explicativo da aula 6 de Java II.

"Ao entrar no m2(), ele imprimiu os valores e deu a Exception. Porém, como não temos o catch dentro do m2(), então, a exceção vazou. O responsável pela chamada era o m1() que tinha o try/catch, por isso, ele conseguiu pegar a Exception e imprimir a mensagem problema. Depois, seguiu com o fluxo do código. Vimos que a exception irá buscar algum try/catch e assim que for encontrado, o fluxo do código continuará. Quando nenhum try/catch é encontrado, a exception vazará até o programa parar."

Então o try / catch pode ser implementado em qualquer lugar? Caso a resposta seja nao, não entendir, pois o resultado foi o mesmo.

1 resposta

Oi João,

Sim, ele pode. Mas implementá-lo em lugares diferentes tem consequências diferentes na execução do programa. Se uma exceção não é tratada, ela imediatamente "explode" para o método anterior, parando a execução do método atual. Isso pode ou não ser o que você deseja. Por exemplo,

public void leArquivos(String[] nomesDosArquivos) throws FileNotFoundException {
    for(String nomeDoArquivo : nomesDosAqruivos) {
        FileInputStream arquivo = new FileInputStream(nomeDoArquivo);
        // faz alguma coisa
    }
}

Esse código pode soltar uma FileNotFoundException. Será que você quer parar de ler o resto dos arquivos se algum não for encontrado? Se a resposta for sim, basta tratar a exception em outro lugar. Se a resposta for não e você quer continuar lendo os arquivos, trate a exception no próprio método.