Duda de novato Resource leak: is never closed

Iniciado por MinW, 19 Diciembre 2013, 06:06 AM

0 Miembros y 1 Visitante están viendo este tema.

MinW

Hola, como veran soy nuevo en esto y quiero aprender Java, en el siguiente codigo me salen una advertencia al costado de la linea 4 que dice:

CitarResource leak: 'teclado' is never closed

¿Que quiere decir esto?


import java.util.Scanner;
public class DosNumeros {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
float valor1,valor2,suma,diferencia,producto,division;
System.out.print("Inserte el primer valor:");
valor1=teclado.nextFloat();
System.out.print("Inserte el segundo valor:");
valor2=teclado.nextFloat();
if (valor1 > valor2){
System.out.print("Suma:");
System.out.println(valor1 + valor2);
System.out.print("Resta:");
System.out.println(valor1 - valor2);
} else {
System.out.print("Producto:");
System.out.println(valor1 * valor2);
System.out.print("Division:");
System.out.println(valor1 / valor2);
}
}}

JADP

El ejercicio esta bien, esa advertencia que tu dices son sugerencias que da eclipse pero no son importantes.

Trane!

Pudes cerrarlo si te sientes mas tranquilo con un teclado.close(); aunque crei que el garbage collector ya se encargaba de estas cosas pero no estoy seguro.

Mitsu

He aquí pon atención, que saber esto temprano te evitará muchos errores cuando trabajes con conexiones y flujos.

Un flujo y/o conexión debe cerrarse siempre. Por ejemplo, si trabajas con Sockets y no cierras la conexión cuando termines de utilizarla, evitará que puedas entablar una nueva conexión. Toda conexión/flujo contiene el método close().

La estructura al trabajar con conexiones/flujos es la siguiente:

Código (=java) [Seleccionar]

try {
   // operaciones a realizar
} catch (TipoDeException ex) {
   throw ex;
} finally {
   // cierre de flujos/conexiones
}


Como el bloque finally se ejecuta pase lo que pase, garantizas que el flujo/conexión se cierre.