Saltar al contenido principal

Boletín 503. Excepciones

En este boletín trabajaremos la creación de excepciones, cómo capturalas y lanzarlas.

Ejercicios

Ejercicio 1. Sigue los siguientes pasos:

  1. Crea una clase ExcepcionNumeroNegativo que herede de Exception:
    • Crea un constructor que permita un mensaje personalizado.
  2. Crea una clase ExcepcionDNIInvalido que herede de Exception:
    • Crea un constructor que permita un mensaje personalizado.
    • Crea un método estático boolean comprobarDNI(String dni) que reciba una cadena de texto y compruebe si es un DNI válido; en caso afirmativo devolverá true, y en caso contrario devolverá false.
  3. Crea una clase Factura con las siguientes características:
    • Debes almacenar el número de factura (este debe ser siempre único y correlativo al anterior número), el DNI del cliente y la cantidad.
    • Crea getters y setters necesarios.
    • Modifica el setter de la cantidad para que lance la excepción ExcepcionNumeroNegativo con el mensaje La cantidad no puede ser negativa si la cantidad introducida es menor que 0.
    • Modifica el setter del DNI para que lance la excepción ExcepcionDNIInvalido si el DNI no es válido con el mensaje El DNI es inválido.
    • Crea un constructor que reciba un DNI y la cantidad. No captures las excepciones ExcepcionNumeroNegativo y ExcepcionDNIInvalido.
    • Documenta el constructor.
    • Redefine el método toString() con el formato <Numero_factura>: <DNI> -> <cantidad> €.
  4. Realiza el siguiente programa principal:
    • Crea una HashTable para almacenar las facturas donde la clave es el número de factura y el valor un objeto de la clase Factura.
    • Introduce las siguientes líneas de código:
      String[] dnis = new String[10];
      double[] precios = new double[10];

      // Añadir datos a los vectores
      dnis[0] = "23977458G"; precios[0] = -150.75; // Precio inválido
      dnis[1] = "39339438P"; precios[1] = 200.00; // Válido
      dnis[2] = "34567890C"; precios[2] = 99.99; // DNI inválido
      dnis[3] = "45678901D"; precios[3] = 50.50; // DNI inválido
      dnis[4] = "10184419L"; precios[4] = 300.00; // Válido
      dnis[5] = "25679974Z"; precios[5] = 450.00; // Válido
      dnis[6] = "69013198L"; precios[6] = -75.25; // Precio inválido
      dnis[7] = "89012345H"; precios[7] = 125.75; // DNI inválido
      dnis[8] = "54924888Z"; precios[8] = 50.50; // Válido
      dnis[9] = "96396159P"; precios[9] = -200.00; // Precio inválido
    • Utiliza los dos vectores anteriores para crear las facturas. Cada índice de los vectores corresponde a los datos de una factura.
    • Captura las excepciones de manera separada que puedan ocurrir en la creación de las facturas. Para cada excepción imprime el valor que es inválido. NOTA: para cada par de valores, solo uno es inválido.
    • Para aquellas facturas que se puedan crear sin lanzar una excepción, almacénalas en la HashTable de facturas.
    • Recorre todas las facturas e imprímelas por pantalla.

Presta atención a los casos en los cuales no se pueda crear una factura, que no quede el número de factura sin utilizar.