¿Alguien ha visto alguna vez una excepción al invocar el método Cerrar en cualquier objeto que se pueda cerrar?¿Alguna vez ha visto un archivo Java close() arrojar una excepción?
Respuesta
Se lanzará IOException
en close
si falla el flush
final. Las posibles causas incluyen:
- el sistema de archivos está lleno, o si el usuario ha terminado de cuotas,
- errores de disco duro,
- un sistema de archivos era la fuerza sin montar,
- un sistema de archivos remoto no está disponible debido a redes u otros problemas,
- (posiblemente) una codificación de caracteres de error si escribir en el archivo a través de un
OutputStreamWriter
o similares, - un error de dispositivo si el "archivo" es un archivo de dispositivo,
- una conexión perdida si el cerrable es una corriente de red,
- una tubería rota si el cerrable es un tubo de proceso externo,
- y así sucesivamente.
Ciertamente he visto algunos de estos. Otros son poco probables.
Sin embargo, si los datos que está escribiendo son importantes, debe permitir que close
fallen. Por ejemplo, si su aplicación está escribiendo un archivo crítico, el sistema de archivos se llena, su aplicación debería notar esto antes de reemplazar la copia anterior del archivo con la versión truncada.
Supongo que podría intentar forzar esto desenchufando el disco en el que está su archivo. Pero en cualquier Closable
? Creo que sería fácil obtener algo que use un socket para lanzar una excepción al cerrar.
No lo he hecho, pero es posible. Imagínese si hay un OutputStream
que por algún motivo aún no ha escrito en el archivo. Bueno, al llamar al close()
se eliminarán los datos, pero si el archivo está bloqueado, se generará un IOException
.
Sí, no es tan raro, en mi humilde opinión si está trabajando con algo que no sean archivos de disco no locales.
Cerrar() funciona si en ese momento su cierre sigue siendo válido y abierto. Muchas cosas como tuberías, archivos remotos, etc., pueden morir prematuramente.
Además, he visto un código que ignora los errores al abrir y escribir y todavía intenta cerrarse (por ejemplo, en un bloque finally).
No en términos de archivo-io, pero en términos de sockets, el cierre aumentará IOException
cuando el otro lado haya abortado la conexión. Por ejemplo, cuando lanza una solicitud HTTP en una página web (grande) y luego navega de inmediato haciendo clic en otro enlace en la página web (mientras no se termina de cargar), el lado del servidor obtendrá un IOException
(o una subclase similar) ClientAbortException
en servidores y clones de Tomcat) cuando el flujo de salida de la respuesta HTTP se va a enjuagar/cerrar.
que tienen - en mis pruebas unitarias contra burla;)
Trate tirando de una unidad USB con un archivo abierto en él. Si no da una excepción, estaría bastante sorprendido.
Mensaje viejo y desde hace mucho tiempo contestado pero aquí es un ejemplo real:
El siguiente código excepto cuando se llama bufferedWriter.close(). Esto sucede porque el Escritor subyacente de BufferedWriter (el FileWriter) ya se ha cerrado y cuando un BufferedWriter se cierra, primero intenta vaciar cualquier información en su búfer a su Writer subyacente.
File newFile = new File("newFile.txt");
FileWriter fileWriter = new FileWriter(newFile);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write("Hello World");
fileWriter.close();
bufferedWriter.close();
Nota: Si no hay datos en el búfer [comentario la línea de escritura() o añadir una llamada a flush()] entonces no es una excepción, se generará
+1 por dar un ejemplo. – sleske
- 1. ¿Qué excepción arrojar?
- 2. ¿Alguna vez ha usado ngen.exe?
- 3. ¿Alguna vez OCaml ha copiado bloques personalizados?
- 4. ¿Alguna vez ha bloqueado el compilador?
- 5. ¿Puede un stringstream arrojar una excepción al leer un primitivo?
- 6. ¿Debería este patrón regex arrojar una excepción?
- 7. Cuándo devolver bool, lanzar una excepción y qué excepción arrojar
- 8. ¿Cómo puedo saber si un archivo ha existido alguna vez en un svn-repo?
- 9. En Delphi 5, ¿puede Free alguna vez generar una excepción?
- 10. ¿Alguien ha visto un rompecabezas de programación similar a esto?
- 11. ¿Alguien ha visto una lista de ejercicios difíciles de Haskell?
- 12. ¿Alguna vez ha obtenido el archivo jquery vsdoc para trabajar con Visual Studio?
- 13. ¿Qué excepción arrojar cuando falta un parámetro/dependencia importante?
- 14. ¿Alguna vez hay una excusa para lanzar una excepción de una conversión implícita?
- 15. ¿Alguna vez Scala (o JVM) ha optimizado objetos (Function)?
- 16. arrojar nueva std :: excepción vs std :: excepción tiro
- 17. Mockito se rehúsa a arrojar una excepción marcada
- 18. ¿Qué tipo de excepción debo arrojar?
- 19. ¿Alguna vez ha salvado su tocino de propiedades triviales?
- 20. ¿Alguna vez ha diseñado software imaginando la solución ideal?
- 21. ¿Se ha admitido el selector :: - webkit-selection alguna vez?
- 22. ¿Alguna vez podremos eliminar un archivo abierto en Windows?
- 23. ¿Puedo arrojar una excepción dentro del código paralelizado MPI?
- 24. ¿Alguna vez ha usado PhantomReference en algún proyecto?
- 25. ¿Alguna vez ha usado métodos de extensión privados?
- 26. ¿Cuál es el uso más inteligente del repositorio de fuentes que haya visto alguna vez?
- 27. ¿Alguien ha leído alguna vez la especificación de lenguaje Java (JLS)?
- 28. ¿Alguna vez Java no tuvo una clase Pair?
- 29. ¿Alguna vez has visto este raro comportamiento/error de JavaScript de IE?
- 30. ¿Cómo puedo determinar si un usuario ha visto alguna vez el cuadro de diálogo solicitando el permiso de notificación de inserción (ios)
interesante .. .. –