2013-10-07 43 views
0

爲什麼我得到的錯誤: RAWDATA不能被原來決心在finally塊對象不能被解決了finally塊

在:

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(); 
    } 
} 

謝謝

+1

做或不​​做;沒有'嘗試'。 – SLaks

回答

1

你宣佈rawDatatry塊內。
該變量不存在於其外部。
特別是,如果try塊在該行之前退出會發生什麼情況?

您需要將該聲明移至try之外。

+0

非常感謝大家 – Clonimus

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(); 
     } 
    } 
} 
0

ü應申報RAWDATA外面的try/catch/finaly阻止

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(); 
    } 
}