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.
3 answers
Supposons que vous étiez:
- Lecture d'un fichier réseau et déconnecté.
- Lecture d'un fichier local qui n'était plus disponible.
- L'utilisation d'un flux pour lire les données et d'un autre processus a fermé le flux.
- Essayer de lire/écrire un fichier mais ne pas avoir l'autorisation.
- 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.
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
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 IOExceptions
avec 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.