循环中 Java 缓冲流读写抛出异常后,是继续还是就放弃?

譬如 是

try{
 for((line = bufferedReader.readline())!=null){
  try{
    bufferedWriter.write(line);
    bufferedwriter.newLine();
  } catch(IOException e){
    ...
 }
}catch(IOException e){
    ...

}

还是

try{
 for((line = bufferedReader.readline())!=null){
    bufferedWriter.write(line);
    bufferedwriter.newLine();
  }
 } catch(IOException e){
 ...
}

也就是说 IO 出错后,会一直出错吗? 如果只是一次性的,前者 OK 否则就要后者

阅读 2.7k
2 个回答

通常是后者,因为IOException通常意味着reader或writer不可用了。建议你做个判断,到底是reader出了问题还是writer除了问题。

另外,建议用Java 1.7的做法,把reader和writer也try起来。

你可以在异常发生后启动异步操作去重试,同时JDK1.7可以使用 try-resources-catch方式,自动关闭流

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题