Programación Avanzada.
Centro Superior de Informática.
Universidad de La Laguna.
2001-2002


Manipulación de Excepciones.


Considere el programa Java  TestMenu.java , en el se crea una barra de menú (Menu) con las opciones que permiten realizar una operación aritmética sobre dos números y cerrar la ventana. Los dos operandos y el resultado se representa mediante campos de texto (TextField). Además, se proporcionan botones (Button) que realizan las mismas operaciones que las opciones del menú.


Cuando se esta ejecutando un programa Java gráfico, si las excepciones no se atrapan, el mensaje de error se muestra en la consola, pero el programa se sigue ejecutando.
Por ejemplo, el siguiente programa java muestra en la consola lo siguiente cuando se introduce un 1 y un 0 y se pulsa el botón dividir:

 java.lang.ArithmeticException
 at MenuTest.calculate(MenuTest.java:136)
 at MenuTest.actionPerformed(MenuTest.java:101)
 at java.awt.Button.processActionEvent(Button.java:230)
 at java.awt.Component.processEvent(Component.java:997)
 at java.awt.ActionEvt.dispatch(ActionEvt.java:16)
 at java.awt.EventDispatchThread.run(EventDispatchThread.java:39)

Si se pulsa alguno de los botones de operaciones aritméticas sin introducir previamente los operandos, las excepciones que se lanzan son las siguientes:

 java.lang.NumberFormatException
 at java.lang.Throwable.<init>(Throwable.java:34)
 at java.lang.Exception.<init>(Exception.java:17)
 at java.lang.RuntimeException.<init>(RuntimeException.java:17)
 at java.lang.IllegalArgumentException.<init>(IllegalArgumentException.java:17)
 at java.lang.NumberFormatException.<init>(NumberFormatException.java:17)
 at java.lang.Integer.parseInt(Integer.java:122)
 at java.lang.Integer.parseInt(Integer.java:116)
 at MenuTest.calculate(MenuTest.java:123)
 at MenuTest.actionPerformed(MenuTest.java:95)
 at java.awt.Button.processActionEvent(Button.java:230)
 at java.awt.Component.processEvent(Component.java:997)
 at java.awt.ActionEvt.dispatch(ActionEvt.java:16)
 at java.awt.EventDispatchThread.run(EventDispatchThread.java:39)
 

Ejercicio:


Modifique método calculate() del programa MenuTest con un bloque try-catch para atrapar las excepciones que se presentan.
El programa debe mostrar una ventana de diálogo en la que se indique que se trata de un Error y el mensaje asociado a la excepción lanzada.


 


Se creará una clase nueva que extienda a la clase Dialog que contenga una etiqueta (Label) y un un botón (Button).
Utilize el constructor:
public Dialog(Frame parent, String title, boolean modal)

que crea un objeto de tipo ventana de dialogo con el título especificado bajo el marco padre. El modo indica si se puede acceder a otras ventanas de la aplicación antes de que la ventana de diálogo sea eliminada.
Además es necesario implementar un método que permita cambiar el contenido de la etiqueta así como la interfaz que permite estar pendiende los eventos que lanza un botón.


Bibliografía.

[1] Y. Daniel Liang. "Introduction to Java Programming". QueE&T. 1999
[2] S. Davis. "Aprenda Java ya". McGraw-Hill. Microsoft Press. 1996.
[3] J. Gosling,  H. McGilton. "The Java Language Enviroment". A White Paper. Sun Microsystems. Java Soft. 1996.
[4] D. Flanagan. "Java en pocs Palabras". McGrawHill-O'Reilyy. 1998.
[5] J.F. Macary, C. Nicolas. "Programación Java". Eyrolles.