Hola de nuevo, continuamos con los errores comprobados y no comprobados mediante otro ejemplo cuyo código es el siguiente:
package er;
import
java.util.Scanner;
public class Entrada_datos {
public static void main(String[] args) {
System.out.println("¿Qué
deseas hacer?");
System.out.println("1.
Introducir datos");
System.out.println("2. Salir
del programa");
Scanner
sc=new Scanner(System.in);
int decision=sc.nextInt();
if(decision==1) {
pedirDatos();
}else {
System.out.println("Adiós");
System.exit(0);
}
sc.close();
}
static void pedirDatos() {
Scanner
sc=new Scanner(System.in);
System.out.println("Introduce
tu nombre, por favor: ");
String
nombre_usuario=sc.next();
System.out.println("Introduce
tu edad, por favor: ");
int edad_usuario=sc.nextInt();
System.out.println("Hola
"+nombre_usuario+" el año que viene tendrás "+(edad_usuario+1)+ "
años");
sc.close();
System.out.println("Hemos
terminado");
}
}
Este programa hace lo siguiente, te da la opción de elegir dos opciones:
Si pulsamos en el 2 nos salimos del programa:
Si pulsamos en el 1 nos solicita el nombre y la edad:
El programa funciona correctamente, sin embargo, en este tipo de programas también se pueden cometer errores, por ejemplo, cuando nos solicita la edad en lugar de introducir un valor numérico introducimos texto nos da el siguiente error:
Nos da un error de tipo InputMismatchException lo primero que
hay que revisar es si hereda de la clase IOException
que son errores comprobamos o hereda de RuntimeException
que son errores no comprobados. Si vamos a la API de Java
comprobamos que este error hereda de la clase RuntimeException es un error no comprobado y que no estamos
obligados a utilizar la estructura try…
catch pero eso no quita que no lo pueda utilizar.
Para mejorar el programa podemos
indicarle a los métodos creados que lance una excepción y una vez que se
ejecute el error capturarlo, esto se realiza utilizando la cláusula Throws.
Si añadimos Throws al método con el error:
static void pedirDatos() throws InputMismatchException{
Si volvemos a ejecutar la aplicación:
Nos vuelve a dar el error porque no
hemos capturado el error. Para captura el error lo haríamos de la siguiente
forma:
static void pedirDatos() throws
InputMismatchException{
try
{
Scanner
sc=new Scanner(System.in);
System.out.println("Introduce
tu nombre, por favor: ");
String
nombre_usuario=sc.next();
System.out.println("Introduce
tu edad, por favor: ");
int edad_usuario=sc.nextInt();
System.out.println("Hola
"+nombre_usuario+" el año que viene tendrás "+(edad_usuario+1)+ "
años");
sc.close();
}catch(InputMismatchException
e)
{
System.out.println("No has
introducido correctamente la edad");
}
System.out.println("Hemos
terminado");
}
Mediante la estructura try.. catch, dentro del try está el código que introducimos por consola, si todo es correcto se ejecuta el último System.out.println pero si hay un error a la hora de introducir la edad se ejecuta el catch, probamos:
Con cualquier duda podéis hacérmelo llegar
a través de los comentarios del blog. Hasta pronto!
10.2 THROWS / TRY / CATCH I << >> 10.4 LANZAMIENTO DE EXCEPCIONES
No hay comentarios:
Publicar un comentario