paribe
Setembro 5, 2008, 7:52am
#1
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 { }
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.
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
Setembro 5, 2008, 7:59am
#4
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…
Sem dizer que o método main deve estar assim:
public static void main(String[] args) throws Exception {
//....
}
[quote=marcio_gs]Sem dizer que o método main deve estar assim:
public static void main(String[] args) throws Exception {
//....
}
[/quote]
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…
[quote=arec_metafora][quote=marcio_gs]Sem dizer que o método main deve estar assim:
public static void main(String[] args) throws Exception {
//....
}
[/quote]
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…[/quote]
Não sabia disso. Na verdade nunca usei ambas juntas, então pensei que necessitava. Interessante saber.
LPJava
Setembro 5, 2008, 9:37am
#8
[quote=marcio_gs]Sem dizer que o método main deve estar assim:
public static void main(String[] args) throws Exception {
//....
}
[/quote]
quando vc trata uma excecao nao é necessario declarar. Observe que se a linha 6 fosse comentada/removida o catch trataria a excecao.