exceções lançadas pelo main

8 respostas
C

To lendo um livro que dá como um exemplo um programa onde o main chama um método que lança um exceção e, ao invés de manipulá-la, o main desvia-se dela, lançando a mesma exceção.

Tento fazer aqui e dá erro, alguém pode explicar?

public class Teste
{
  public void bla(int i) throws Exception
  {
    if(i>0) throw new Exception();
  }
}

public class Principal
{
	
  public static void main(String[] args) throws Exception
  {
    Teste t = new Teste();
    t.bla(10);  	
  }
}

8 Respostas

romarcio

Deveria compilar, cola aqui o erro de compilação que está sendo gerado.

C

Exception in thread "main" java.lang.Exception at Teste.bla(Teste.java:5) at Principal.main(Principal.java:7)

A

retira o throws do main e trata com o try-catch

public class Teste  
{  
  public void bla(int i) throws Exception  
  {  
    if(i>0) throw new Exception("Numero inválido");  
  }  
}  
  
public class Principal  
{  
      
  public static void main(String[] args)   
  {  
    Teste t = new Teste(); 
    try{
        t.bla(10);
    }catch(Exception ex){
        System.out.print(ex.getMessage);
    }        
  }  
}
C

A pergunta é: “Pq dá erro?”

romarcio
<blockquote>Exception in thread “main” java.lang.Exception

at Teste.bla(Teste.java:5)

at Principal.main(Principal.java:7)</blockquote>

Você diz que não compila. Mas essa exceção que você postou ocorre em tempo de execução, não é isso?

C

Exato… Compila mas dá esse erro ae…
Me expressei mal :XD:

E

Esse é exatamente o comportamento esperado. Como o main é que dá um throws Exception, ele joga isso para o Java, e ele resolve abortar seu programa, mostrando a tal mensagem de erro. OK?

romarcio

cake:
Exato… Compila mas dá esse erro ae…
Me expressei mal :XD:

A bom…

Quando vc fez isso:

if(i>0) throw new Exception("Numero maio que 0"); vc está testando se i > 0, se for, lança uma exceção.

Por isso da essa exceção que vc postou.

Criado 8 de dezembro de 2010
Ultima resposta 9 de dez. de 2010
Respostas 8
Participantes 4