Java-Ce qui lance une IOException


java.io.IOException semble être le type d'exception le plus commun, par coïncidence, il semble aussi être le plus ambigu. Je continue à voir le throws IOException chaque fois que j'écris avec des sockets, des fichiers et c. Je n'en ai jamais eu un tiré sur moi, cependant, je me demande donc ce qui est censé déclencher l'exception. La documentation n'est pas très utile pour expliquer ce qui se passe:

Signale qu'une exception d'E/S s'est produite. Cette classe est la classe générale des exceptions produit par des opérations d'E/S ayant échoué ou interrompues.

Quelqu'un peut-il expliquer certains cas où une IOException serait levée, ou comment elle est censée être utilisée.

Author: Zaq, 2012-11-04

3 answers

Supposons que vous étiez:

  1. Lecture d'un fichier réseau et déconnecté.
  2. Lecture d'un fichier local qui n'était plus disponible.
  3. L'utilisation d'un flux pour lire les données et d'un autre processus a fermé le flux.
  4. Essayer de lire/écrire un fichier mais ne pas avoir l'autorisation.
  5. Essayer d'écrire dans un fichier, mais l'espace disque n'était plus disponible.

Il y a beaucoup plus d'exemples, mais ce sont les plus courants, dans mon expérience.

 47
Author: Yogendra Singh, 2016-07-14 02:39:09

En général, les E/S signifient Entrée ou sortie. Ces méthodes lancent le IOException chaque fois qu'une opération d'entrée ou de sortie échoue ou est interprétée. Notez que cela ne sera pas lancé pour lecture ou écriture en mémoire car Java le gérera automatiquement.

Voici quelques cas qui entraînent IOException.

  • Lecture à partir d'un inputstream fermé
  • Essayez d'accéder à un fichier sur Internet sans connexion internet
 8
Author: Sri Harsha Chilakapati, 2016-10-16 10:01:55

La documentation Java est utile pour connaître la cause première d'une exception IOException

Il suffit de jeter un oeil à direct known sub-interfaces de IOException de la page de documentation:

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

La Plupart de ces exceptions sont explicites.

Quelques IOExceptionsavec des causes profondes:

EOFException : Signale qu'une fin de fichier ou de flux a été atteinte de manière inattendue lors de l'entrée. Cette exception est principalement utilisée par les flux d'entrée de données pour signaler la fin de flux

SocketException : Levée pour indiquer qu'il y a une erreur lors de la création ou de l'accès à un socket.

RemoteException: Une RemoteException est la superclasse commune pour un certain nombre d'exceptions liées à la communication qui peuvent se produire lors de l'exécution d'un appel de méthode distante. Chaque méthode d'une interface distante, une interface qui étend java.rmi.Remote, doit répertorier RemoteException dans sa clause throws.

UnknownHostException: Jeté à indiquer que l'adresse IP d'un hôte n'a pas pu être déterminée. ( vous ne pouvez pas être connecté à Internet)

MalformedURLException : Levée pour indiquer qu'une URL mal formée s'est produite. Soit aucun protocole légal n'a pu être trouvé dans une chaîne de spécification, soit la chaîne n'a pas pu être analysée.

 3
Author: Ravindra babu, 2016-07-14 09:19:39