IOException为什么被设计为非RuntimeException

使用java语言在使用IO相关api时,往往要处理很多的ioexception,但ioexception明明在运行时才能发现的异常,为什么不设计为runtimeException呢

阅读 2.8k
1 个回答

因为能导致 IO 异常的事情,是很容易发生的。

比如我需要一个 /opt/cat/logs 文件夹存放我的日志文件,但是

  1. 我有目录权限读写吗?
  2. 目录存在吗?
  3. 子目录存在吗?
  4. 我要读写的日志文件已经被另一个程序以 独占 形式打开了怎么办?
  5. 其他情况 ...

这些情况很难见吗?并不。

所以即便它们是运行时才会发现的异常,程序设计时为健壮性考虑,就必须为它们提前做好应对措施。即 catch 里进行回退或包装成业务异常抛出到上层调用。

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