我有以下功能正文
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块内打开和关闭文件。
答案 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);
}
}