Dúvida com um método de uma apostila

7 respostas
juninhodg

Estou seguindo uma apostila de Java, Orientação a objetos e me deparei com um método que tá dando um erro, e como sou novato em Java conto com a ajuda de vocês ^^

Aí o método:

import java.io.FileNotFoundException;


public class TestaExcessoes {

	/**
	 * @param args
	 * @throws FileNotFoundException 
	 */
	public static void main(String[] args){
		public static void metodo() throws java.io.FileNotFoundException{
			new java.io.FileInputStream("aaa.txt");
		}
	}

}

E a excessão:
[color=red][b]
Exception in thread “main” java.lang.Error: Unresolved compilation problems:
Syntax error on token(s), misplaced construct(s)
Syntax error on token “void”, @ expected
Syntax error on token “throws”, delete this token

at TestaExcessoes.main(TestaExcessoes.java:11)[/b][/color]

Porque isso tá acontecendo?

Obrigado pela ajuda! =D

7 Respostas

ribclauport

Voce declarou um método dentro de outro método.

juninhodg

KKKK erro idiota, então só segui o que tava na apostila, que deve ter sido meu sobrinho de 2 anos q escreveu. No caso eu posso declarar esse método dentro da Classe Main?

ribclauport

Veja faça assim.....

import java.io.FileNotFoundException;  
  
  
public class TestaExcessoes {  
	public static void metodo() throws java.io.FileNotFoundException{  
        new java.io.FileInputStream("aaa.txt");  
    }  
  
    /** 
     * @param args 
     * @throws FileNotFoundException  
     */  
    public static void main(String[] args) throws FileNotFoundException{  
        TestaExcessoes.metodo();
    }  
  
}

Quando rodar não vai achar o arquivo se vc não criou o mesmo então vai sair no console isso:

Exception in thread "main" java.io.FileNotFoundException: aaa.txt (O sistema não pode encontrar o arquivo especificado)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(Unknown Source)
	at java.io.FileInputStream.<init>(Unknown Source)
	at Listas.TestaExcessoes.metodo(TestaExcessoes.java:7)
	at Listas.TestaExcessoes.main(TestaExcessoes.java:15)

Pelo nome da classe é isso que deve fazer testar excessão.

juninhodg

Entendi, no caso, todo e qualquer método que chame outro método que contém o throws declarado, precisa ter o throws da mesma forma, é isso? E quando esse throws declarado no método pode ser útil, porque pelo que eu entendi o try / catch se torna mais flexível, corrija-me se estiver errado =D

ribclauport

Como o assunto é realmente extenso, leia os artigos contidos nesse post, ae se tiver dúvidas a gente exclarece ok?

juninhodg

Beleza amigo, vou ler =D Abs.

M

Nesses casos, é legal você tratar as exceptions como umas mensagens mais “amigaveis”, coloca um try catch e trata a mensagem, eu fazia isso e ajudava bastante (:

Criado 29 de fevereiro de 2012
Ultima resposta 1 de mar. de 2012
Respostas 7
Participantes 3