[英]Finally block not working in JAVA Stored procedure for Oracle
當我編譯下面的代碼時,它顯示錯誤“找不到符號變量”,但是如果我在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;
}
如果要在finally塊中引用它,則需要在try塊之外定義“輸出”
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();
}
您聲明out
的中try
塊。 這意味着,一旦您離開try-finally
語句的try
部分,就超出了范圍。 您可以在try
語句之外聲明它,並在finally
塊中進行空檢查,或者使用Java 7的try-with-resources
語句。
PrintWriter out;
try {
out = ...
} finally {
if(out != null) {
out.close();
}
}
要么
try(PrintWriter out = ...) {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.