datos - flujos de entrada y salida en java pdf
¿La forma correcta de cerrar un OutputStream en Java? (3)
Creo que tu camino es el ''mejor'' camino. Si Close lanza una excepción, de hecho simplemente no puedes hacer nada al respecto. Esto probablemente lanza una excepción capturada porque podría ser mala, dependiendo de cómo se use. Si realmente necesita cerrar un archivo, le gustaría imponerlo. Si solo desea utilizar cerrar para manejar el error, solo debe ignorar la excepción.
Esto parece casi una tontería, pero ¿cuál es el patrón más confiable a seguir cuando se cierra un OutputStream? En este momento tengo algo como lo siguiente que parece ser try-catch-finally-overkill:
private void writeContentsToFile(OutputStream ostream, Properties contents) {
try {
contents.store(ostream, "comments");
}
catch (IOException e) {
throw new ResourceException("Failed to write contents", e);
}
finally {
try {
ostream.close();
}
catch (IOException e) { /* what can be done here anyway? */ }
}
}
Por qué cerrar una excepción marcada sigue siendo un misterio para mí. Puedo crear un método de envoltorio que haga el bloque de cierre / captura pero si hay algo que ya existe, como FileUtil.closeFileAndThrowUncheckedException()
me gustaría usarlo. Esto se vuelve un poco más útil cuando tienes muchos proyectos más pequeños con muchos desarrolladores; Una forma de hacerlo bien.
No creo que la excepción deba ser tragada. La persona que llama es engañada al creer que el contenido está escrito con éxito. La excepción debe propagarse hacia arriba.
Si no le gustan las excepciones marcadas (especialmente para los errores de nivel tan bajo), envuélvala como desactivada. O puede seguir la convención de Java, para bien o para mal, y declarar IOException en su método.
Si está utilizando Apache Commons, entonces IOUtils.closeQuietly () hace el trabajo muy bien. Consulte http://commons.apache.org/proper/commons-io/javadocs/api-1.4/org/apache/commons/io/IOUtils.html#closeQuietly(java.io.OutputStream)