Eclipse (Juno) da la siguiente advertencia:¿Por qué este código genera una advertencia de "fuga potencial de recursos"?
pérdida de recursos Potencial: 'os' no puede ser cerrado
en la primera línea del cuerpo try
en este código:
static void saveDetails(byte[] detailsData) {
OutputStream os = null;
try {
os = sContext.openFileOutput(DETAILS_FILE_NAME, Context.MODE_PRIVATE);
os.write(detailsData);
} catch (IOException e) {
Log.w(LOG_TAG, "Unable to save details", e);
} finally {
if (os != null) {
try {
os.close();
} catch (IOException ignored) {
}
}
}
}
Se declara que el método openFileOutput
arroja un FileNotFoundException
.
¿Esto es un falso positivo? Parece un análisis de ruta de ejecución bastante simple.
Sería más fácil si indicara de qué línea se queja el eclipse, pero supongo que está relacionado con la línea openFileOuput: ¿cuánto tiempo dura el objeto abierto? ¿El archivo debe estar cerrado? – atk
@atk: el OP indica que la advertencia se encuentra en la primera línea del cuerpo de prueba. Entonces 'os = sContext.OpenFileOutput ...'. –
Si 'sContext' es nulo, se lanzará una NullPointerException y finalmente no se activará ya que no se trata de una excepción detectada. En este caso, 'os' no se cerrará (ni se abrirá). –