为什么我会收到错误: 在finally块中 rawData无法重新分析 ?
在:
public void parseData(String fileName) throws IOException
{
try
{
DataInputStream rawData = new DataInputStream(new FileInputStream(fileName));
/* here I'm gonna do something*/
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
finally
{
rawData.close();
}
}
谢谢
答案 0 :(得分:1)
您在rawData
区块内声明了try
变量不存在于其之外。
特别是,如果try
块在该行之前退出会发生什么?
您需要将声明移到try
。
答案 1 :(得分:0)
rawData
对finally
块不可见,因为它是在try
块中声明的。
public void parseData(String fileName) throws IOException
{
DataInputStream rawData = null;
try
{
rawData = new DataInputStream(new FileInputStream(fileName));
/* here I'm gonna do something */
} catch (FileNotFoundException e)
{
e.printStackTrace();
} finally
{
if (rawData != null)
{
rawData.close();
}
}
}
答案 2 :(得分:0)
你应该在try / catch / finally块
之外声明原始数据public void parseData(String fileName) throws IOException
{
DataInputStream rawData;
try
{
rawData = new DataInputStream(new FileInputStream(fileName));
/* here I'm gonna do something*/
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
finally
{
rawData.close();
}
}