java的try catch的问题

零起跑线 2010-04-06 11:25:39
第一段代码:
public String readFile(String title){
String info;
FileReader fr;
try{
fr = new FileReader(path + title + ".txt");
}catch(FileNotFoundException e){
return ""; //注意这里
}

BufferedReader br = new BufferedReader(fr);
try{
info = br.readLine();

br.close();
fr.close();
}catch(IOException e){
return null; //注意这里
}

return info;
}


第二段代码:
public String readFile(String title){
String info;
FileReader fr;
try{
fr = new FileReader(path + title + ".txt"); //提示fr没有被初始化
}catch(FileNotFoundException e){

e.printStackTrace(); //这里和上面的不同
}

BufferedReader br = new BufferedReader(fr);
try{
info = br.readLine();

br.close();
fr.close();
}catch(IOException e){

e.printStackTrace(); //这里和上面的不同
}

return info; //提示info没有被初始化
}


我用eclipse编译,第一段代码正确,而第二段代码提示错误,说是fr和info还没有被初始化,我想问的是,为什么catch后面用了return语句就不报错了
...全文
75 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangyangweiyue 2010-04-06
  • 打赏
  • 举报
回复
第二段代码:
String info = null;
FileReader fr = null;
零起跑线 2010-04-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 goldenfish1919 的回复:]
第一段代码中,如果try快抛出了异常,那么就直接返回“”,后面的代码就不执行了。
第二段代码中,如果try快抛出了异常,fr就没有被初始化,因为异常被catch了,后面的代码接着执行,这时候fr有可能是没有被初始化的。
[/Quote]
谢谢,说得很明白
若鱼1919 2010-04-06
  • 打赏
  • 举报
回复
第一段代码中,如果try快抛出了异常,那么就直接返回“”,后面的代码就不执行了。
第二段代码中,如果try快抛出了异常,fr就没有被初始化,因为异常被catch了,后面的代码接着执行,这时候fr有可能是没有被初始化的。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧