Jump to content
jfosorio

Como fazer o try/catch correr num loop?

Recommended Posts

jfosorio

Boas pessoal,

Estou a desenvolver um método para ler um ficheiro e quero fazer o try catch do FileNotFoundException. No entanto, não sei como implementar isto de forma a que corra num ciclo, até ser digitado o nome de um ficheiro existente.

Alguém me pode dar uma ajuda?

O código que desenvolvi é este:

private static double[][] lerFx() throws Exception {
        String fx, conteudo = "";

            try {
                printInput("Indique o nome do ficheiro:");
                fx = ler.next();
                Scanner input = new Scanner(new File(fx + ".doc"));
                while (input.hasNext()) {
                    conteudo += input.nextLine();
                }
                if (input != null) {
                    input.close();
                }
            } catch (FileNotFoundException fe) {
                System.err.println("O ficheiro não foi encontrado");
                lerFx();
            }

        return DescodificadorHTML.descodificar(conteudo);
    }

Ah! No catch invoquei recursivamente o método lerFx, e funciona num loop se o ficheiro indicado não for encontrado. Contudo, se for inserido o nome de um fx existente, a execução do programa é cancelada...

Se alguém me puder explicar qual é o problema do meu código, agradeço!


CSS 3D Text - Partilha mensagens em 3D com os teus amigos no Facebook!

Portal de Informática it4life - Emprego, notícias, fórum, comunidade.

Share this post


Link to post
Share on other sites
edgarzigne

try

{

}

} catch (FileNotFoundException fe) {

                System.err.println("O ficheiro não foi encontrado");

             

}

finnally

{

    lerFx();

}

Share this post


Link to post
Share on other sites
brunoais

O teu problema tem solução fácil.

O que está a acontecer é que ele devolve sempre o primeiro resultado, que pode ser null.

O que devias fazer é criar um "flag" qq para coordenar isso. ou andar sempre a transportar o resultado.

Algo do género:

private static double[][] lerFx() throws Exception {
        String fx, conteudo = "";

            try {
                printInput("Indique o nome do ficheiro:");
                fx = ler.next();
                Scanner input = new Scanner(new File(fx + ".doc"));
                while (input.hasNext()) {
                    conteudo += input.nextLine();
                }
                if (input != null) {
                    input.close();
                }
                return DescodificadorHTML.descodificar(conteudo);
            } catch (FileNotFoundException fe) {
                System.err.println("O ficheiro não foi encontrado");
               return lerFx();
            }

        
    }

Acho que esse código responde ao que queres. Experimenta.

BTW: Nunca uses: throws Exception. Especifica sempre o que é que ele pode enviar, nem que seja uma lista enorme!

try

{

}

} catch (FileNotFoundException fe) {

                System.err.println("O ficheiro não foi encontrado");

             

}

finnally

{

    lerFx();

}

Então o que queres realmente é um ciclo infinito, n?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.