本帖最后由 王得新 于 2012-10-14 17:51 编辑
一直没注意到这个问题,突然意识到的,求解释:
class IoException
{
public static void main(String[] args)
{
FileWriter file=null;//2.在这里先声明,这时file就就会作用于整个函数
try{
//FileWriter file=new FileWriter("demo.txt");//1 这样写是不对的,因为file实在try代码块中声明的,那么在finally的代码块中就访问不到,
//也就是说file.close()关闭不了,得在步骤 2处先声明
file=new FileWriter("demo.txt");
file.write("aaaaaaaaaaaa");
}catch(IOException e){
System.out.println(e.toString());
}finally{
try{
if(file!=null)//3 问题来了,既然file是在try块中进行实例化的,是不是file的作用范围就在try块中?那么在这里file是不是还是null,
{ //如果是null的话,那么file就没有实例化,没有实例化的file是不能调用close()的。
//(我想这里的file应该是实例化的,但是我就是理解不了,望黑马能解释下!)
file.close();
}
}catch(IOException e){
System.out.println(e.toString());
}
}
}
}
|