[ Foro de Java ]

Try Catch

16-Jun-2011 11:56
David Nuñez
5 Respuestas

Hola, esta es la solución a uno de los problemas que planteas en tu manual:


/* -------------------------------------------------------- *
 * Introducción a Java - Crea un programa que te pida tu    *
 * nombre y escriba un triángulo con las letras que lo      *
 * forman, mostrando primero la primera letra, luego las    *
 * dos primeras y así sucesivamente, hasta llegar al nombre *
 * completo, como en este ejemplo:                          *
 * N                                                        *
 * Na                                                       *
 * Nac                                                      *
 * Nach                                                     *
 * Nacho                                                    *
 * (Pista: tendrás que usar "substring" y un bucle "for")   *
 * Por David Nuñez, Ejercicio 1 Tema 7b                     *
 * -------------------------------------------------------- *
 *  Fichero: DibujoNombre.java                              *
 *----------------------------------------------------------*/

import java.io.*;

class DibujoNombre{

	public static void main(String args[])
	{
		String nombre = "";
		int i;
		System.out.println("Hola, escribe tu nombre: ");
		try{
			BufferedReader entrada = new BufferedReader (new InputStreamReader (System.in));
		
			nombre = entrada.readLine();
		
			for(i=1;i<=5;i++)
			{	
				System.out.println(nombre.substring(0,i));
			}
		}
		catch (IOException e){}
	}
}


Lo he compilado por linea de comando y funciona perfectamente pero mi duda surge porque si no utilizo try-catch no compila me da errores y no debería ser así no?? no entiendo porque tengo que utilizar esta estructura.

Gracias Nacho


17-Jun-2011 10:05
Nacho Cabanes (+83)

Es así. En otros lenguajes no es necesario, pero en Java, tienes que usar un boque try..catch para poder leer desde teclado. Ten en cuenta que Java se puede usar en dispositivos que no tengan un teclado convencional (como un teléfono móvil o incluso un horno microondas), y en los que, por tanto, no tendría sentido una orden "readLine".

Tomo nota para ampliar ese apartado del curso con estos detalles.  ;-)


17-Jun-2011 11:16
David Nuñez

Muchas gracias Nacho


03-Aug-2014 18:21
José Antonio Seguido Doblado

Aprovecho la cuestión lanzada por David Nuñez para ampliar la pregunta:

¿Existe una norma genérica del uso try-catch?

Es decir, en la propia API de JAVA existen muchas excepciones creadas para poder gestionar posibles errores, pero...

¿Cómo sabe el desarrollador el momento exacto de usarlas si su naturaleza es muy variada?
¿Es una cuestión de experiencia adquirida o se puede intuir su uso?

Gracias por adelantado.


14-Jan-2015 09:30
Invitado (Ruben )

Yo estoy haciendo un ciclo superior de programación y en java usamos sistema.out.println sin try y catch


14-Jan-2015 10:23
Nacho Cabanes (+83)

El problema no es en la salida (System.out) sino en la entrada.

En versiones antiguas de Java había que usar BufferedReader, que necesitaba try-catch. En versiones modernas se puede usar Scanner, más sencillo y que no necesita try-catch. Supongo que será esa la construcción que estaréis usando para leer datos desde teclado.

Por cierto, he visto que había una pregunta sin contestar referida a cómo saber qué posibles excepciones pueden saltar. Básicamente hay dos formas de saberlo: mirar primero en la referencia oficial o bien probar a compilar y esperar a obtener un error de compilación que nos diga que debemos interceptar o lanzar una cierta excepción.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)