java.io.IOException
似乎是最常见的异常类型,巧合的是,它似乎也是最模棱两可的。
我一直看到throws IOException
使用套接字、文件等进行写入的时候。但是,我实际上从来没有向我开过火,所以我想知道是什么应该引发异常。该文档对于解释正在发生的事情不是很有帮助:
表示发生了某种 I/O 异常。此类是由失败或中断的 I/O 操作产生的一般异常类。
在哪些情况下会抛出 IOException,应该如何使用它?
java.io.IOException
似乎是最常见的异常类型,巧合的是,它似乎也是最模棱两可的。
我一直看到throws IOException
使用套接字、文件等进行写入的时候。但是,我实际上从来没有向我开过火,所以我想知道是什么应该引发异常。该文档对于解释正在发生的事情不是很有帮助:
表示发生了某种 I/O 异常。此类是由失败或中断的 I/O 操作产生的一般异常类。
在哪些情况下会抛出 IOException,应该如何使用它?
假设你是:
还有很多例子,但根据我的经验,这些是最常见的。
通常, I/O 表示Input 或 Output。IOException
每当输入或输出操作失败或解释时,这些方法都会抛出。请注意,这不会被抛出以读取或写入内存,因为 Java 将自动处理它。
以下是一些导致IOException
.
Java 文档有助于了解特定IOException的根本原因。
只需查看文档页面中直接已知的子接口IOException
:
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 地址(您可能未连接到 Internet)。
MalformedURLException:抛出以指示发生了格式错误的 URL。在规范字符串中找不到合法协议,或者无法解析该字符串。