Foro de elhacker.net

Programación => Java => Mensaje iniciado por: MinW en 19 Diciembre 2013, 06:06 am



Título: Duda de novato Resource leak: is never closed
Publicado por: MinW en 19 Diciembre 2013, 06:06 am
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:

Citar
Resource leak: 'teclado' is never closed

¿Que quiere decir esto?


Código:
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);
}
}}


Título: Re: Duda de novato Resource leak: is never closed
Publicado por: JADP en 19 Diciembre 2013, 13:50 pm
El ejercicio esta bien, esa advertencia que tu dices son sugerencias que da eclipse pero no son importantes.


Título: Re: Duda de novato Resource leak: is never closed
Publicado por: Trane! en 19 Diciembre 2013, 14:08 pm
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.


Título: Re: Duda de novato Resource leak: is never closed
Publicado por: Mitsu en 20 Diciembre 2013, 13:46 pm
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
  1. try {
  2.   // operaciones a realizar
  3. } catch (TipoDeException ex) {
  4.   throw ex;
  5. } finally {
  6.   // cierre de flujos/conexiones
  7. }
  8.  

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