Duvida com Throw

7 respostas
P

caros,

desculpa minha ignorância mas não entendi por que fica invalido
o codigo abaixo.
Pois estou acostumado a usar throw new FlowException();
em catch …

abs

class Flow {
	    public static void main(String [] args) {
	      try {
	        System.out.print("before ");
	        throw new FlowException();
	        System.out.print("after ");
	      } catch (FlowException fe) {
	        System.out.print("catch ");
	      }
	     System.out.println("done ");
	   }
	 }
	 class FlowException extends Exception { }

7 Respostas

ChronoTrigger

O

System.out.print("after ");

nunca irá ocorrer, então o compilador não deixa que vc faça isso.

Se vc realmente quiser lançar uma exceção aí, faça assim

if (true){
throw new FlowException();   
}

Assim vc “engana” o compilador.

arec_metafora

Inválido em que sentido? Que tp de erro está acontecendo?
Se for erro de compilação, nunca testei, mas tenho quase certeza que acontece o que o amigo ChronoTrigger disse: o throw new Exception funciona como um “return” e o código abaixo nunca será acessado…

LPJava

simples! o compilador, nao vai permitir compilar pq a linha 6 jamais vai acontecer entao ele nao pode deixar algo compilar se ele sabe que isso jamais sera executado nem com reza braba a linha 6 executa…

M

Sem dizer que o método main deve estar assim:

public static void main(String[] args) throws Exception { //.... }

arec_metafora

marcio_gs:
Sem dizer que o método main deve estar assim:

public static void main(String[] args) throws Exception { //.... }

Pq? Não precisa não… toda exceção lançada no try vai ser “catcheada” no mesmo bloco. Nenhuma exceção é lançada pro main…

M

arec_metafora:
marcio_gs:
Sem dizer que o método main deve estar assim:

public static void main(String[] args) throws Exception { //.... }

Pq? Não precisa não… toda exceção lançada no try vai ser “catcheada” no mesmo bloco. Nenhuma exceção é lançada pro main…

Não sabia disso. Na verdade nunca usei ambas juntas, então pensei que necessitava. Interessante saber.

LPJava

marcio_gs:
Sem dizer que o método main deve estar assim:

public static void main(String[] args) throws Exception { //.... }

quando vc trata uma excecao nao é necessario declarar. Observe que se a linha 6 fosse comentada/removida o catch trataria a excecao.

Criado 5 de setembro de 2008
Ultima resposta 5 de set. de 2008
Respostas 7
Participantes 5