我正在学习Java(抱歉我的英语不好,这不是我的母语),当我在Eclipse中的每个“尝试”中执行Eclipse(JavaSE-1.7)中的“try-finally”块时,会出现这个消息:
此行有多个标记 - 语法错误,插入“}”以完成阻止 - 语法错误,插入“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();
}
}
}
答案 0 :(得分:1)
使用OP的评论
@yan Odd,我使用jdk7,这适用于我,但是,然后,也许是日食 使用jdk6来测试语法错误。 - gangqinlaohu 2小时前
这是正确的。您正在使用一些jdk7功能,但eclipse配置为使用jdk6(或更旧版本)。以下是使用eclipse(changing eclipse's java compiler to jdk7)启用jdk7的说明。
具体而言,是合规性设置。
答案 1 :(得分:0)
正如Eclipse所说,在armazenarContas()
方法中,您没有使用finally
(或其他任何内容)完成try{}
语句。您需要在try{}
的末尾添加catch{}
或finally{}
。
您的语法应该是这样的:
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
}
或者您甚至可以combine them all:
try{
//Do stuff
} catch (ExceptionType name) {
//If you get an exception
} finally {
//Always excecuted
}