10

我正在使用文件输入/输出流。我知道从程序中读取一个不存在的文件FileInputStream会给出FileNotFoundException. 正确的?所以我可以捕捉到这个异常,并且可以在异常上返回 null 或 0 值(取决于执行所有这些读取操作的方法的返回类型),以传达调用程序该文件不存在并且应该创建该文件。

但是我不知道IOException通常何时发生,以及我应该向调用程序传达“这”由于“那”而发生的确切原因是什么。我完全不知道这里的“这个”和“那个”是什么。

任何人请详细说明在什么情况下IOException会发生这种情况以及在这种情况下我应该采取什么具体行动。请帮忙。谢谢。

4

3 回答 3

8

什么是IOException

AnIOException是 JVM 在尝试运行程序时遇到的任何意外问题。它可能遇到的问题有:

  • 试图从不存在的文件中读取
  • 尝试写入具有无效名称的文件(标题中的斜线或问号应该这样做)
  • 当没有更多标记时,尝试读取文件中的下一个标记。

当 anIOException被抛出时,这意味着无论抛出异常(可能是try{}-catch从文件中读取数据的块)都可以抛出一个IOException,例如如果文件未找到、损坏等,或者当文件无法被阅读,或任何其他可能与IO包及其扩展一起出现的问题列表。

遇到了怎么办IOException

当您遇到 时IOException,您可以记录它或打印一条错误消息。如果您正在读取一个不退出的文件,您可以创建一个以避免将来出现异常。很大程度上取决于你在做什么。如果您正在调试,打印堆栈跟踪总是有帮助的。

参考javadoc

于 2013-10-27T09:03:02.703 回答
1

您可以执行以下操作:

  1. 在日志文件中记录异常信息。您可以使用以下方法填充异常信息。

  2. 当IOECeption发生在读/写时,如果InputStream/OutputStream不为null,请尝试关闭。

  3. 用有意义的消息抛出你自己的异常,让用户知道发生了什么。

于 2013-10-27T09:04:59.270 回答
0

通常是当文件不存在或您没有读/写权限时......等等。

当然可能是其他事情,所以您能做的最好的事情就是打印消息并查看导致异常的原因。此外,您可以在每个类上看到哪些方法抛出了什么以及何时抛出,我建议您对此进行调查,这可能会帮助您涵盖更多可能遇到此异常的情况。

遇到异常应该怎么办?这取决于你的程序,没有具体的答案,取决于很多事情。

于 2013-10-27T09:02:40.887 回答