O que acontece?

5 respostas
P

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?

5 Respostas

T

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

H

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???

P

A moral então é a seguinte, se a exceção não ser tratada o programa será finlizado…

T

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.

H

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.

Criado 3 de março de 2004
Ultima resposta 4 de mar. de 2004
Respostas 5
Participantes 3