web-dev-qa-db-ja.com

Java-IOExceptionをスローするもの

Java.io.IOExceptionは例外の最も一般的なタイプであるように思われますが、偶然にも最も曖昧なようです。 throws IOExceptionソケット、ファイル、&cを使用して書き込む場合。しかし、実際に発砲したことは一度もないので、例外を発動することになっているのは何なのか疑問に思っています。ドキュメントは何が起こっているのかを説明するのにあまり役に立ちません:

ある種のI/O例外が発生したことを通知します。このクラスは、失敗または中断したI/O操作によって生成される例外の一般的なクラスです。

誰かがIOExceptionがスローされるいくつかのインスタンス、またはそれがどのように利用されることになっているのか説明してください。

34
Zaq

あなたが:

  1. ネットワークファイルの読み取り中に切断されました。
  2. 使用できなくなったローカルファイルの読み取り。
  3. ストリームを使用してデータを読み取り、他のプロセスを使用してストリームを閉じました。
  4. ファイルを読み書きしようとしていますが、許可がありません。
  5. ファイルに書き込もうとしましたが、ディスク容量が使用できなくなりました。

さらに多くの例がありますが、これらは私の経験では最も一般的です。

57
Yogendra Singh

一般に、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が発生したことを示すためにスローされます。仕様文字列に正当なプロトコルが見つからなかったか、文字列を解析できませんでした。

6
Ravindra babu