1

当我编译下面的代码时,它显示错误“找不到符号变量”但是如果我在 finally 块中注释代码,我能够成功编译。

请指教。

public static int writeFile (String p_file_path, String p_data) throws Exception 
{
  try {
    FileWriter outFile = new FileWriter(p_file_path,true);
    PrintWriter out = new PrintWriter(outFile);
    out.println(p_data);
  } catch (Exception  e) {
  } finally {
    out.close();
  }
  return SUCCESS;
}
4

2 回答 2

10

如果要在 finally 块中引用它,则需要在 try-block 之外定义“out”,例如

PrintWriter out = null;
try
{
    FileWriter outFile = new FileWriter(p_file_path,true);
    out = new PrintWriter(outFile);
    out.println(p_data);
}
finally
{
    if (out != null)
        out.close();
}
于 2012-04-15T23:55:39.310 回答
3

outtry块内声明。这意味着一旦您离开声明的try一部分,这超出了范围try-finally。您可以在语句之外声明它try并在块中进行空检查finally,或者使用 Java 7 的try-with-resources语句。

PrintWriter out;
try {
    out = ...
} finally {
    if(out != null) {
        out.close();
    }
}

或者

try(PrintWriter out = ...) {
}
于 2012-04-15T23:56:22.050 回答