【发布时间】:2018-02-12 09:47:53
【问题描述】:
我有以下函数体
String f(filename){
BufferredReader br = null;
try{..}
catch(Exception e){
e.printStackTrace();
}
}
在 try 块中,我尝试打开文件并对其进行处理。在 try 块的末尾,我返回一个字符串。程序无法编译。
所以,我在 try 块之前初始化了一个字符串变量,在 try 块中操作变量并在 catch 块之后返回它。这是正确的方法吗?我的问题是为什么编译器不允许我直接返回 try 块内的字符串。此外,我试图通过在 catch 块之后执行 br.close() 来关闭文件,并且程序没有编译太多说我需要处理 IOException,所以我不得不关闭 try 块内的文件。
这也是写的方式吗?在 try 块中打开和关闭文件。
【问题讨论】:
-
是什么让您认为它不允许这样做?关键是,每个可能的场景都需要一个 return 语句。要么,要么你需要在你的catch块中抛出一个异常
-
如果您使用的是 java 7+,您可以使用 try-with-resource 块。 docs.oracle.com/javase/tutorial/essential/exceptions/…
-
不,它不会继续到下一行。它跳转到 catch 块。在问题中发布您的真实代码。
-
我的意思是在异常被捕获之后。它继续到 catch 块之后的内容
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建 minimal reproducible example。使用“编辑”链接改进您的问题 - 不要通过 cmets 添加更多信息。谢谢!