Java.io.IOException
は例外の最も一般的なタイプであるように思われますが、偶然にも最も曖昧なようです。 throws IOException
ソケット、ファイル、&cを使用して書き込む場合。しかし、実際に発砲したことは一度もないので、例外を発動することになっているのは何なのか疑問に思っています。ドキュメントは何が起こっているのかを説明するのにあまり役に立ちません:
ある種のI/O例外が発生したことを通知します。このクラスは、失敗または中断したI/O操作によって生成される例外の一般的なクラスです。
誰かがIOExceptionがスローされるいくつかのインスタンス、またはそれがどのように利用されることになっているのか説明してください。
あなたが:
さらに多くの例がありますが、これらは私の経験では最も一般的です。
一般に、I/Oは入力または出力を意味します。これらのメソッドは、入力または出力操作が失敗または解釈されるたびにIOException
をスローします。これはメモリへの読み取りまたは書き込みとしてスローされないことに注意してください。Javaが自動的に処理します。
IOException
になるいくつかのケースを以下に示します。
Javaのドキュメントは、特定の IOException の根本原因を知るのに役立ちます
direct known sub-interfaces
of IOException
of documentation page:
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 :ソケットの作成またはアクセスでエラーが発生したことを示すためにスローされます。
RemoteException :RemoteExceptionは、リモートメソッド呼び出しの実行中に発生する可能性のある多くの通信関連の例外の一般的なスーパークラスです。 Java.rmi.Remoteを拡張するインターフェースであるリモートインターフェースの各メソッドは、そのthrows句にRemoteExceptionをリストする必要があります。
nknownHostException :ホストのIPアドレスを特定できなかったことを示すためにスローされます。 (インターネットに接続されていない可能性があります)
MalformedURLException :不正な形式のURLが発生したことを示すためにスローされます。仕様文字列に正当なプロトコルが見つからなかったか、文字列を解析できませんでした。