Eu li que podemos inserir um bloco de código try e usar somente o bloco de código finally, mas aí o que vai acontecer se uma exceção acontecer dentro do try?
O que acontece?
5 Respostas
Bom essa sua dúvida era pra ter postado no forum JAVA e não aki no de certificação… mas tudo bem…
a execeção será lançada pra cima… se ninguem tratar … ela vai para fatalmente o aplicativo…
bom isso só pode acontecer c a exceção estiver na classe java.lang… todas as outras execeções… é obrigatorio o uso de Try {} catch() {} … com finally opicional
Ex.: de execeção q não exige catch… NullPointerException… ArrayOutOfBand… formato de numero errado… essas básicas
c num tiver ficado claro da 1 toke… q eu exeplico melhor
Olá, ping
Geralmente, a exceção é relançada para o chamador do método declarando-a na cláusula throws.
void xxx() throws SQLException // quem pariu Mateus que o embale
{
Connection con = null;
try
{
...
}
finally
{
con.close(); // isto evita que o connection pool fique com uma
// conexão vadia
}
}
Outra caso é quando ocorre uma unchecked exception, que cai no caso anterior sem ser preciso declarar explicitamente na cláusula throws.
Fui kraro, bróder???
A moral então é a seguinte, se a exceção não ser tratada o programa será finlizado…
na verdade … bem verdade… será finalizado a thread…
a depender de onde foi a exceção (thread principal) vai finalizar o programa…
bom o java te obriga a tratar exceções que são prevista em código…
vc só pode deixar de tratar as execeções fundamentais…
que são aquelas defenidas na biblioteca java.lang… as outras exceções… exegim tratamento…
e o método que lança a exceção é obrigado a declar que a exceção será lançada… exemplo
ai se vc for usar este método vc é obrigado a tratar a exceção…
com try catch…
mas se meu método faz o seguinte:
public void meuMetodoQueMudaUmaString(String suaString) throws NullPointerException {
if (suaString == null)
throw new NullPointerException();
else {
...
//faz algo com a string
}
}
este código dai… não necessita que a exceção seja tratada… e este tipo de método que pode interromper a thread.
A execução do bloco finally não encerra nem o programa nem a thread nem o método. Sua colocação no programa implica simplesmente que, se o bloco try for iniciado, ocorrendo ou não exceção, o código no interior do bloco finally será executao. Claro, se houver código após o bloco finally, ele poderá ser executado se nenhum return ou throw for executado nos blocos try e catch.
Eu entendo o bloco o bloco finally como uma chance de fazer limpeza forçada ocorrendo ou não exceção.