import java.io.*;
class tThrows {
public static void main(String[] args) throws IOException
{
try {
throw new IOException();
} finally {
throw new FileNotFoundException();
}
}
}
O que q acontece?
6 Respostas
Eu acho que dá erro de execucao, pois está faltando a clausula CATCH do bloco TRY/CATCH/FINALLY.
Ou seja, é preciso capturar a exceção lançada no bloco TRY, no caso a IOException.
Estou correto?
nao… catch não é obrigatorio
Exibe FileNotFoundException né?
E eu não preciso capturar a ecxeção no catch uma vez q eu lanço lá
no main…não é isso?
Pois é .. catch não é obrigatório ... então uma exception lançada no bloco try simplesmente entra no bloco finally e como não tem mais ninguem pra tratar excessão o main faz o throw ... ou seja, a saída será
Exception in thread "main" java.io.FileNotFoundException
import java.io.*;
class tThrows {
public static void main(String[] args) throws IOException {
try {
throw new IOException();
} catch(IOException e){
throw new EOFException();
} finally {
throw new FileNotFoundException();
}
}
}
(só que ele entra no catch .. mas o finally eh quem acaba tratanto a excessao.
Ou seja não preciso de CATCH
Agora e no caso de não ser lancado nenhuma excessão no finally, ou seja se ele não existisse, como seria o comportamento…
assim,
se fosse assim:
try {
throw new IOException();
} finally {
System.out.println("Entrei no Finally");
}
ele primeiro iria mostrar a String “Entrei no Finally” e depois iria acusar a exeção.
agora, blocos try sempre devem ser seguidos de catch ou finally
isso nao compila:
try {
// alguma coisa
}