我正在编写一个程序,其中使用 BufferedReader 对象从用户处获取输入,然后在 catch block 中捕获 BufferedReader 对象抛出的 IOException,但当我在 finally block 中关闭资源时,为什么它说用 try/catch 包围或声明 IOException
这是程序
public class BufferedReader3 {
public static void main(String[] args){
// TODO Auto-generated method stub
InputStreamReader r=null;
BufferedReader br=null;
String name="";
try
{
r =new InputStreamReader(System.in);
br =new BufferedReader(r);
while(!name.equals("stop"))
{
System.out.println("Enter data: ");
name=br.readLine();
}
System.out.println("data is: "+name);
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
br.close();
r.close();
}
}
}
最佳答案
由于以下原因,close
方法可能会抛出 IOException
(source) :
If an I/O error occurs
这就是为什么 close
方法可能抛出的 IOException
也需要被捕获,因为它位于 finally
block 中,而不是在现有的 try catch
block 中:
finally {
try {
br.close();
r.close();
} catch (IOException e) {
e.printStackTrace();
}
}
关于java - 当我已经拥有 BufferReader 对象时,为什么它要求我用 try catch 包围它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53748241/