写了段小代码,到最后为什么close()写在finally编译时就显示找不到符号fw,而把close写在catch里就正常了?import java.io.*;
public class TestFileWriter
{
public static void main(String[] args)
{
try 
{
FileWriter fw =new FileWriter("f:\\java\\iverson.txt");
int c=0;
for(c=0;c<5000;c++)
{
fw.write(c);
}
//fw.close();                 //写在这里正常运行
}
catch(IOException e)
{
System.out.println("文件错误");
e.printStackTrace();
}

finally                 //写在这里不正常
{
fw.close();  
}

}
}

解决方案 »

  1.   

    那是肯定啦 ,你把 
    FileWriter fw = null ;
    放到try外面定义 就可以了
      

  2.   

    一对{}表示一个作用域,你的变量定义在try这个作用域之类,当然在别的作用域就没办法得到了。正如:
    public static void main(String[] args) {
    {
    int i = 0;
    }
    System.out.println(i);
    }
    同样都是获取不到i这个东西的