1

我正在学习 Java(对不起,我的英语很差,这不是我的母语),当我在 Eclipse(JavaSE-1.7)中执行“try-finally”块时,在我输入的每个“尝试”中都会出现以下消息:

此行有多个标记 - 语法错误,插入“}”以完成 Block - 语法错误,插入“Finally”以完成 BlockStatements

这是完整的代码:

package Java;

public class Arquivo3 {

    private Path BdC = Paths.get("C:/xti/files/conta.txt");
    private Charset utf8 = StandardCharsets.UTF_8;

    public void armazenarContas(ArrayList<Conta> contas) throws IOException{                
        try(BufferedWriter writer = Files.newBufferedWriter(BdC, utf8)) {
            for (Conta conta : contas) {
                writer.write(conta.getCliente() + ";" + conta.getSaldo() + "\n");
            }
        }
    }

    public ArrayList<Conta> recuperarContas() throws IOException{
        ArrayList<Conta> contas = new ArrayList<Conta>();
        try (BufferedReader reader = Files.newBufferedReader(BdC, utf8)){
            String line = null;
            while((line = reader.readLine()) != null) {
                String[] t = line.split(";");
                Conta conta = new Conta(t[0], Double.parseDouble(t[1]));
                contas.add(conta);
            }
        }finally {
        return contas;  
        }

    }

    public static void main(String[] args) throws IOException{
/*
        ArrayList<Conta> contas = new ArrayList<Conta>();
        contas.add(new Conta("Ricardo", 12000.23));
        contas.add(new Conta("Lawrence", 11050.32));
        contas.add(new Conta("Sandra", 18000.21));
        contas.add(new Conta("Beatriz", 23200.09));
    */  
        Arquivo3 operacao = new Arquivo3();
        //operacao.armazenarContas(contas);
        ArrayList<Conta> contas2 = operacao.recuperarContas();
        for (Conta conta : contas2) {
            conta.exibeSaldo();
        }
    }

}
4

2 回答 2

1

使用来自 OP 的评论

@yan 奇怪,我使用 jdk7,这对我有用,但是,也许 eclipse 使用 jdk6 来测试语法错误。– 港琴老湖 2 小时前

那是对的。您正在使用一些 jdk7 功能,但 eclipse 配置为使用 jdk6(或更早版本)。以下是使用 eclipse 启用 jdk7 的说明( 将 eclipse 的 java 编译器更改为 jdk7)。

具体来说,合规性设置。

于 2013-04-22T05:49:16.613 回答
0

正如 Eclipse 所说,在您的armazenarContas()方法中,您不会用 a (或其他任何东西)来完成您的try{}陈述。您finally需要catch{}在.finally{}try{}

你的语法应该是这样的:

try {
//Do stuff
} catch (ExceptionType name) {
//If an exception occours, you can handle it here.
}

或者:

try {
//Do stuff
} finally {
//Everything in this block of code will be excecuted
}

或者您甚至可以将它们全部组合起来

try{
//Do stuff
} catch (ExceptionType name) {
//If you get an exception
} finally {
//Always excecuted
}
于 2013-04-21T23:31:26.607 回答