web-dev-qa-db-fra.com

Java - Ce qui lève une exception IOException

Java.io.IOException semble être le type d’exception le plus courant; par coïncidence, il semble également être le plus ambigu. Je continue à voir le throws IOException lorsque vous écrivez avec des sockets, des fichiers, etc. Cependant, je n'ai jamais vraiment tiré sur moi, alors je me demande 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 de quelque sorte s'est produite. Cette classe est la classe générale des exceptions générées par des opérations d'E/S échouées ou interrompues.

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

34
Zaq

Supposons que vous soyez:

  1. Lire un fichier réseau et s'est 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 la permission.
  5. Essayer d'écrire dans un fichier mais l'espace disque n'était plus disponible.

Il existe de nombreux autres exemples, mais ceux-ci sont les plus courants, selon mon expérience.

57
Yogendra Singh

En général, I/O signifie 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 jeté pour lecture ou écriture en mémoire comme Java le gérera automatiquement.

Voici quelques cas qui aboutissent à IOException.

  • Lecture à partir d'un flux d'entrée fermé
  • Essayez d'accéder à un fichier sur Internet sans connexion Internet
11

La documentation Java est utile pour connaître la cause première de (IOException

Il suffit de jeter un coup d’œil sur direct known sub-interfaces De IOException depuis 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.

Peu de IOExceptionsavec des causes profondes:

EOFException : Indique qu'une fin de fichier ou une fin 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 du flux

SocketException : Émis pour indiquer qu’une erreur est survenue 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 pouvant survenir pendant l'exécution d'un appel de méthode à distance. Chaque méthode d'une interface distante, une interface qui étend Java.rmi.Remote, doit lister RemoteException dans sa clause throws.

nknownHostException : levé pour indiquer que l'adresse IP d'un hôte n'a pas pu être déterminée. (vous n'êtes peut-être pas connecté à internet)

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

6
Ravindra babu