Java - 抛出IOException的原因

Zaq*_*Zaq 35 java io exception ioexception

java.io.IOException似乎是最常见的例外类型,巧合的是,它似乎也是最模糊的.throws IOException每当用套接字,文件和c编写时,我都会看到它.然而,我从来没有真正对我开枪,所以我想知道是什么原本应该解雇这个例外.该文档对解释正在发生的事情没有多大帮助:

表示发生某种I/O异常的信号.此类是由失败或中断的I/O操作产生的一般异常类.

有人可以解释一些抛出IOException的实例,或者它应该如何被利用.

Yog*_*ngh 60

假设你是:

  1. 读取网络文件并断开连接.
  2. 读取不再可用的本地文件.
  3. 使用某些流来读取数据,其他一些进程关闭了流.
  4. 尝试读取/写入文件但没有权限.
  5. 尝试写入文件但磁盘空间不再可用.

还有更多的例子,但根据我的经验,这些是最常见的.

  • 对于数字 4,那么什么是 SecurityException? (2认同)

Sri*_*ati 13

通常,I/O表示输入或输出.IOException无论何时输入或输出操作失败或解释,这些方法都会抛出.请注意,读取或写入内存时不会抛出此内容,因为Java会自动处理它.

以下是一些导致的案例IOException.

  • 从封闭的输入流中读取
  • 尝试在没有网络连接的情况下访问互联网上的文件


Rav*_*abu 7

Java文档有助于了解特定IOException的根本原因

只是看看direct known sub-interfacesIOException,从文档页面:

ChangedCharSetException, CharacterCodingException, CharConversionException, ClosedChannelException, EOFException, FileLockInterruptionException, FileNotFoundException, FilerException, FileSystemException, HttpRetryException, IIOException, InterruptedByTimeoutException, InterruptedIOException, InvalidPropertiesFormatException, JMXProviderException, JMXServerErrorException, MalformedURLException, ObjectStreamException, ProtocolException, RemoteException, SaslException, SocketException, SSLException, SyncFailedException, UnknownHostException, UnknownServiceException, UnsupportedDataTypeException, UnsupportedEncodingException, UserPrincipalNotFoundException, UTFDataFormatException, ZipException

这些例外大多数都是自我解释。

IOExceptions根本原因很少:

EOFException:表示在输入过程中意外到达文件结尾或流结尾。此异常主要由数据输入流用来通知流结束

SocketException:抛出该异常表示创建或访问Socket时出错。

RemoteException:RemoteException是在执行远程方法调用期间可能发生的许多与通信有关的异常的公共超类。远程接口的每个方法(扩展java.rmi.Remote的接口)都必须在其throws子句中列出RemoteException。

UnknownHostException:抛出该异常以指示无法确定主机的IP地址。(您可能未连接到互联网)

MalformedURLException:抛出该异常表示URL 格式错误。在规范字符串中找不到合法协议,或者无法解析该字符串。