Download Manejo de Excepciones - Universidad Autónoma de Campeche

Document related concepts
no text concepts found
Transcript
FACULTAD DE INGENIERÍA UNIVERSIDAD AUTÓNOMA DE CAMPECHE FORMATO PRÁCTICAS DE LABORATORIO NOMBRE DEL PROFESOR: Ing. Héctor Manuel Quej Cosgaya NOMBRE DE LA PRÁCTICA: Manejo de Excepciones PRÁCTICA NÚM. [ 9 ] LABORATORIO: MATERIA: UNIDAD: TIEMPO: Centro de Ingeniería Computacional Lenguaje de Programación I Subcompetencia IV 2 horas OBJETIVO: Comprender el mecanismo de las excepciones, conocer el mecanismo para evitarlas y la manera en como lanzar excepciones personalizadas. MARCO TEÓRICO: Una excepción representa una situación imprevista por el programador al momento de la ejecución de un programa. En el pasado, cuando un programa encontraba un error, normalmente se seguía ejecutando sin informar al usuario o programador, a menudo terminando el programa de manera inmediata, causando una pérdida de la información. Las lenguajes de programación de alto nivel proporcionan el mecanismo de las excepciones, que nos permiten conocer gran cantidad de información acerca de un error, la causa por la que ocurren, e incluso maneras para intentar recuperar el estado del programa y evitar que finalice de manera abrupta. En la práctica, se procede a explicar el mecanismo de las excepciones, los manejadores de excepciones y como crear y lanzar excepciones personalizadas. LISTA DE MATERIALES: • Java SDK • Bloc de notas / Editor SciTE EQUIPO DE LABORATORIO: • Computadora Personal DESARROLLO DE LA PRÁCTICA: Primera parte: Excepciones controladas 1. Abre el editor de texto SciTE. En su defecto, puedes usar el Bloc de Notas. 2. Crea una clase pública que se llame Practica9. Guárdala como ‘Practica9.java’ y compílala. FACULTAD DE INGENIERÍA FORMATO PRÁCTICAS DE LABORATORIO UNIVERSIDAD AUTÓNOMA DE CAMPECHE 3. Dentro de la clase Practica9, escribe el siguiente método: public void leerNumero(){ java.util.Scanner lector = new java.util.Scanner(System.in); System.out.println(“Introduce un número: “); int numero = lector.nextInt(); System.out.print(“Espera…”); Thread.sleep(1500); System.out.println(“Leí el número “ + numero + “!”); } 4. Intenta compilar la clase de nuevo. El compilador te marcará el siguiente error: error: unreported exception InterruptedException; must be caught or declared to be thrown. 5. Modifica la declaración del método leerNumero() para advertir que puede lanzar una excepción controlada de tipo InterruptedException. public void leerNumero() throws InterruptedException { … 6. Compila el programa. Ahora no deberías tener ningún problema. 7. Crea un método main para la clase Práctica 9. Dentro crea una nueva instancia de Practica9 para llamar al método leerNumero(): public static void main(String[] args) { new Practica9().leerNumero(); } 8. Una vez más, intenta compilar el programa. El mismo error que surgió durante el paso 4 aparecerá otra vez. 9. Proporciona un manejador de excepciones para la llamada al método leerNumero() a. Dentro del bloque try, simplemente ejecuta la llamada al método leerNumero(). b. Añade un bloque catch para capturar una excepción de tipo InterruptedException. Nómbrala ‘excepcion’ y dentro del bloque catch imprime el mensaje de la excepción (utiliza el método getMessage() para recuperarlo). c. Añade un bloque finally que imprima una sentencia al usuario que el programa está a punto de finalizar. try { new Practica9().leerNumero(); } catch (InterruptedException excepcion) { System.out.println(“Atrapé una excepción! Dice: “ + excepcion.getMessage()); FACULTAD DE INGENIERÍA FORMATO PRÁCTICAS DE LABORATORIO UNIVERSIDAD AUTÓNOMA DE CAMPECHE } finally { System.out.println(“Todo listo. Abandonando el programa!”); } 10. Compila el programa. El error debe haber desaparecido. 11. Ejecuta el programa. Cuando se te solicite, introduce un número. Segunda parte: Excepciones no controladas. 12. Ejecuta de nuevo el programa. Esta vez, cuando se te solicite, introduce una letra. 13. Agrega un bloque a tu manejador de excepciones para procesar la excepción no controlada InputMismatchException, después del bloque catch para la excepción InterruptedException pero antes del bloque finally. Dentro de este nuevo bloque catch escribe una sentencia para decirle al usuario que solamente se aceptan números. […] excepcion.getMessage()); } catch (java.util.InputMismatchException excepcion2) { System.out.println(“¡Por favor, introduce solo números!”); } finally { […] 14. Ejecuta de nuevo el programa. Introduce una letra y observa el cambio de comportamiento. Tercera parte: Lanzamiento de excepciones personalizadas. 15. Agrega las siguientes sentencias al final del método leerNumero(): public void leerNumero() throws InterruptedException { InterruptedException excepcionPropia = new InterruptedException(“Hola! Me llamo Ralph”); throw excepcionPropia; [ … ] } 16. Ejecuta el programa. Introduce un número y observa el comportamiento del método leerNumero(). 17. Ejecuta de nuevo el programa. Introduce una letra y observa el comportamiento del método leerNumero(). Fin de la práctica FACULTAD DE INGENIERÍA UNIVERSIDAD AUTÓNOMA DE CAMPECHE FORMATO PRÁCTICAS DE LABORATORIO RETROALIMENTACIÓN: • Utiliza todo lo que has aprendido durante el curso para crear una calculadora. Debe contener métodos para sumar, restar, multiplicar y dividir. También debe ser tolerante a errores (por ejemplo, división entre cero o introducir letras en vez de números) RECOMENDACIONES ADICIONALES: • Invesitga cuales son las causas de las siguientes excepciones y errores, los cuales son muy comunes. Investiga también una metodología para diagnosticar sus posibles causas y cómo corregirlos. o NullPointerException o ArrayIndexOutOfBoundsException o ClassCastException o ArithmeticException o NumberFormatException o StackOverflowError o OutOfMemoryError • Lee el capítulo 14 del Dean (Manejo de Excepciones) BIBLIOGRAFÍA: • Dean, J. S., & Dean, R. H. (2009). Introducción a la programación con Java. México:
Mc Graw Hill.
• Roberts, Simon; Heller Philip y Ernest, Michael (1999). The Complete Java 2 Certification Study Guide. Alameda, California: SYBEX.
• Apuntes del profesor.