Nosotros podemos diseñar nuestros propios generadores de errores mediante la sentencia throw.
Imaginemos que tenemos desarrollado un formulario en el que entre otros muchos datos solicitamos la edad del usuario. Nuestra intención es que el usuario sea mayor de 16 años y menor de 65, es decir que este en edad laboral optima.
Para este caso podríamos desarrollar un validador de edad que en caso de que la edad indicada no este dentro de los parámetros dados lance un error.
Podríamos hacer algo así. Abriremos nuestro editor de java Eclipse y crearemos un nuevo proyecto al que llamaremos GenerarError. Añadiremos la clase EdadPersona y la clase TestEdad en la que marcaremos el casilla de la opcion public static void main(String[]args).
En nuestra clase EdadPersona incluiremos el siguiente código:
- public class EdadPersona {
- private int edad;
- public void decirEdad(int NuevaEdad) throws Exception{
- if (NuevaEdad < 16 || NuevaEdad > 65){
- throw (new Exception ("Valor no admitido"));}
- edad=NuevaEdad;
- }
- public String toString (){
- return "edad declarada" + edad;
- }
- }
Comprobamos que la edad es correcta. Si es correcta devolvemos su valor con el método toString, si es incorrecta lo comunicamos generando un error.
En nuestra clase TestEdad insertaremos el siguiente código:
- import java.util.*;
- public class TestEdad {
- public static void main(String[] args) {
- boolean equivocado=false;
- Scanner sc=new Scanner(System.in);
- EdadPersona Edad=new EdadPersona();
- do{
- equivocado=false;
- System.out.print("Indique su edad");
- try{
- int edad=sc.nextInt();
- Edad.decirEdad(edad);
- System.out.println(Edad.toString());
- }
- catch(Exception e){
- System.out.println(e.getMessage());
- equivocado=true;
- }
- }while (equivocado);
- }
- }
En primer lugar importamos java.util.* para poder usar posteriormente Scanner y tomar el valor de pantalla. Una vez tenemos capturada la edad en int edad=sc.nextInt(); la pasamos al método decirEdad de la clase EdadPersona.
Si la edad es correcta el flujo del programa continua en System.out.println(Edad.toString()); y no indicara la declarada según el método toString.
En caso de que la edad sea incorrecta se genera un error y nos muestra el texto por defecto que hemos puesto en el error: throw (new Exception ("Valor no admitido"));, la variable equivocado toma el valor true y la aplicación continua hasta que se le de un valor correcto en cuyo momento la variable equivocado toma el valor false y el bucle cesa.






