martes, 11 de diciembre de 2012

Excepciones Parte 3: Métodos utilizados y Excepciones Personalizadas.

Buenas amigos,en temas anteriores vimos las Excepciones marcadas y las Excepciones No Marcadas. En este nuevo apartado de las excepciones vamos a ver algunos métodos que utilizan las excepciones y veremos como crear nuestras propias excepciones para un uso más personal y especifico de ellas.



Bien, todas las clases de excepciones heredan ciertos métodos de la clase "Throwable", los cuales se pueden utilizar en los bloques "catch" para complementar las acciones que en ellas se realizan. Los más destacados son:
      • String getMessage(): Devuelve un mensaje de texto asociado a la excepción.
      • void printStackTrace(): Envía a consola el volcado de la pila asociada a la excepción.
      • void printStacktrace(PrintStream s): Esta versión perite enviar el volcado de la pila a un objeto de la clase PrintStream.

El método "void printStackTrace()" es el más utilizado para complementar el "catch" y es el que se nos pone por defecto cuando le decimos a eclipse o Netbeans que nos haga un bloque try,catch.

Ya hemos visto los métodos más comunes utilizado en las excepciones, ahora veamos como podemos crear excepciones personalizadas por nosotros mismos.

Supongamos que llegamos al punto en el que no nos sirven ningún tipo de excepción de la clase "Exception", algo complicado, pero posible que ocurra, o deseamos crear una excepción mucho más específica. Para ello podemos crear una clase que herede de "Exception" y poder así personalizar una excepción a nuestro gusto. Pongamos un ejemplo:
      • Supongamos que introducimos números por teclado, y cuando un 0 sea leído, nos salte una excepción sin capturar, avisando de que se ha introducido un número 0, para ello vamos a crear una clase que herede de "Exception":
Esta clase anterior, es la excepción en sí. Le pasamos una cadena de texto al constructor de la clase padre "Exception" ( super() ), la cual será utilizada por el método getMessage() para mostrarnos dicho mensaje.


Hemos creado una segunda clase la cual nos dejará introducir números hasta que introduzcamos un cero. Si ejecuto esto tal cual e introduzco un 0, nos dará el siguiente resultado:

Como podéis observar tenemos nuestra excepción personalizada, con el mensaje que le hemos pasado al constructor por parámetro, la clase donde nos salta la excepción y la linea de código donde nos salta. Podéis ver que hay 2 lineas de código marcadas, linea 15 y linea 24. Bien la primera linea es donde surge la excepción y podríamos pensar que es allí donde dirigir nuestras miradas para solucionar el problema, pero no es así, ya que es la MAIN la que ejecuta, es allí donde deberíamos mirar, en este caso el problema reside en que no hemos capturado la excepción para ver como nos quedaría cuando saltase, sólo tendríamos que eliminar todo el "throws" y colocar u bloque try,catch,finally conteniendo la linea de código "new NumeroCeroException().introducirNumero()":


Ahora ya lo tenemos capturado, en vez de saltar la excepción, nos mostrará un mensaje diciendo "Soy un cero!!!" y terminará la ejecución, puesto que el bucle do/while termina cuando aparece un 0.

Y con esto acabamos con la personalización de las Excepciones, en la siguiente y última parte de las excepciones solo voy a poner una cuantas excepciones y a describir que hacen cada una.

Un saludo.

No hay comentarios:

Publicar un comentario