java尝试除了在try和catch之后返回

时间:2017-09-04 07:28:20

标签: java io

我有以下功能正文

String f(filename){
   BufferredReader br = null;
   try{..}
   catch(Exception e){
       e.printStackTrace();
   }

}

在try块中,我尝试打开文件并对其进行操作。在try块的末尾,我返回一个字符串。该程序无法编译。

因此,我在try块之前初始化一个字符串变量,操作try块内的变量并在catch块之后返回它。这是正确的方法吗?我的问题是为什么编译器不允许我直接在try块内返回字符串。此外,我试图通过在catch块之后执行br.close()来关闭文件,并且程序也没有编译,说我需要handel IOException,所以我不得不关闭try块内的文件

这也是写作方式吗?在try块内打开和关闭文件。

1 个答案:

答案 0 :(得分:1)

您必须在任何可能的情况下从函数返回一些值(或抛出异常),因此不编译此代码:

String f(filename){
   BufferredReader br = null;
   try{
     ...
     return s;
   }
   catch(Exception e){
       e.printStackTrace(); // what is return from function in this case?  
   }
}

您应该使用以下代码

String f(filename){
   BufferredReader br = null;
   try{
     ...
     return s;
   }
   catch(Exception e){
       e.printStackTrace();
   }
   return null; // or return "";
}

String f(filename){
   BufferredReader br = null;
   try{
     ...
     return s;
   }
   catch(Exception e){
       e.printStackTrace();
       throw new RuntimeException(e);
   }
}