对象无法在finally块中解析

时间:2013-10-07 14:30:08

标签: finally

为什么我会收到错误: 在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();
    }
}

谢谢

3 个答案:

答案 0 :(得分:1)

您在rawData区块内声明了try 变量不存在于其之外。
特别是,如果try块在该行之前退出会发生什么?

您需要将声明移到try

之外

答案 1 :(得分:0)

rawDatafinally块不可见,因为它是在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();
    }
}