Sei sulla pagina 1di 5

Programación Orientada a Objetos

Manejo de Excepciones
Taller

Tema 1 - Conteste las siguientes preguntas

a) Considera la siguiente jerarquía de clases del paquete java.nio.file y la implementación de


las clases Base y Deri (5 PUNTOS)

Jerarquía de clases del paquete java.nio.file

class Base {
public void foo() throws FileSystemException {
throw new FileSystemException("");
}
}
class Deri extends Base {
/* escribir la definición aquí */
}

¿Cuáles de las siguientes definiciones de sobre-escritura del método foo() en la clase Deri
son compatibles con la definición del método foo() en la clase base? Seleccione todas las
definiciones del método foo() que podrían compilar sin errores al colocar ese método en /*
escribir la definición aquí */?
Para los siguientes temas cree un nuevo proyecto en Netbeams. El nombre del proyecto debe ser
Apellido1Apellido2_t7.
Realice cada ejercicio en un nuevo paquete.

Tema 2

Parte 1
Cree una clase llamada LeerCaracter.
Dentro de la clase LeerCaracter haga lo siguiente
1. Escriba un método estático llamado “carcaterEn” en Java que realice la siguiente acción:
 Recibe como parámetros una cadena (String) y un entero (int).
 Si el entero está entre 0 y la longitud menos 1 de la cadena devuelve el carácter en la
posición correspondiente. En caso contrario, construye y lanza una excepción de tipo
IllegalArgumentException con el mensaje ‘Índice fuera de rango’
public static char carcaterEn(String cadena, int indice) throws
IllegalArgumentException
{
//su codigo aqui
}

Código para lanzar una excepción

throw new ExceptionClass()


throw new ExceptionClass(Mensaje)

Recuerde: El método no captura la excepción, sino que la lanza para ser manejada por un
método más adelante.

2. Escribe el método main en Java que realice lo siguiente:


a. Crea un objeto de la clase Scanner y asócielo a la entrada estándar.
b. Defina una variable de tipo string llamada Cadena y asígnele un valor inicial.
c. Lee un objeto de tipo entero por teclado
d. Invoca al método “carcaterEn” con la cadena del literal b y el con el entero leído en el
literal c.
e. Muestra en pantalla en pantalla el caracter en la posición ingresada.
f. Su programa DEBE Capturar la posible excepción lanzada por “carcaterEn”,
mostrando por pantalla el mensaje lanzada por la excepción.
 Usted puede mostrar el mensaje lanzado por una excepción usando el método
getMessage()
(CAPTURA DE PANTALLA DE SU IMPLEMENTACIÓN)

Pruebe su programa con los siguientes datos:


Prueba 1 cadena: ´Java´
número: 3
Prueba 2 cadena: ´Java´
número: 4
Prueba 3 cadena: ´Java´
número: mnmn

Preguntas:
a) ¿Cuál es la salida del programa con los datos de prueba “Prueba 1”? ¿Por qué? (incluya
una captura de pantalla del programa en ejecución con los datos ingresados)
b) ¿Cuál es la salida del programa con los datos de prueba “Prueba 2”? ¿Por qué? (incluya
una captura de pantalla del programa en ejecución con los datos ingresados)
c) ¿Cuál es la salida del programa con los datos de prueba “Prueba 3”? ¿Por qué? (incluya
una captura de pantalla del programa en ejecución con los datos ingresados)
d) ¿Qué tipo de excepción es IllegalArgumentException?
e) ¿Cuándo se declaró el método caracterEn al final de la firma del método se agregó throws
IllegalArgumentException. ¿Se produciría un error de sintaxis al omitir está línea de la
firma? ¿Sí o No y Por qué?
f) ¿Qué pasa sino capturamos la excepción que lanza el método carcaterEn´ en el main y se
introduce un índice fuera de rango?.

Parte 2

El método nextInt de la clase Scanner puede llanzar la excepción InputMismatchException.


 Modifique su programa para que capture se captura también esa excepción y se
muestre un mensaje apropiado al usuario.
(CAPTURA DE PANTALLA DE SU IMPLEMENTACIÓN)

Preguntas:
a) ¿Por qué Java no nos obliga a manejar la excepción InputMismatchException?.

Parte 3 - Capturar múltiples excepciones en un solo catch


A partir de la versión 7 de Java es posible capturar en un solo bloque catch múltiples excepciones.
try{
//codigo
}
catch (IOException | SQLException ex) {
//captura
}

 Modifique el código anterior para que en el mismo catch Block capture todas las
excepciones que se pueden producir en el tema 3.
Debe mostrar un mensaje apropiado y el tipo de excepción que se lanzó

(CAPTURA DE PANTALLA DE SU IMPLEMENTACIÓN)


Referencia:
Multi-Catch Block - (Introducido en Java 7)
Java Complete References - Pag 231 - 232

TEMA 3 – Definir excepciones y lanzar excepciones


Definiendo sus propias excepciones

Puede definir sus propias clases de excepción, pero cada clase debe ser una clase derivada de una
clase de excepción ya existente (ya sea de una de las bibliotecas estándar de Java o programadas por el
programador)

GUIDELINES

 If you have no compelling reason to use any other class as the base class, use the class Exception
as the base class. 


 You should define two (or more) constructors, as described later in this list. 

 Your exception class inherits the method getMessage. Normally, you do not need to add any other
methods, but it is legal to do so. 

 You should start each constructor definition with a call to the constructor of the base class, such as
the following: 
 super("Sample Exception thrown!");
 You should include a no-argument constructor, in which case the call to super should have a string
argument that indicates what kind of exception it is. This string can then be recovered by using the
getMessage method.
 You should also include a constructor that takes a single string argument. In this case, the string
should be an argument in a call to super. That way, the string can be recovered with a call to
getMessage. 

Tema 3 (paquete3)

 Define una clase llamada “CadenaNoValidaExcepcion” que herede de la clase Exception. La


clase debe tener lo siguiente:
o Un constructor sin parámetros que fije como mensaje: ¨Cadena no Valida¨.
o Un constructor que reciba como parámetro un String con el mensaje de la exepción
NOTA: Recuerde llamar con super al constructor de la clase padre

 En la clase LeerCaracter
o Defina un método llamado pedirCadena que pida al usuario por teclado una cadena
de caracteres y retorne la cadena ingresada. Este método debe validar si la cadena es
valida. Una cadena es valida si contiene solo letras. Si la cadena no es valida el metodo
lanza la excepción CadenaNoValidaExcepcion.

public String pedirCadena() throws CadenaNoValidaExcepcion


{
//su codigo aqui
}

o Modifique el método main para que invoque la método pedirCadena para obtener la
cadena desda la cual vamos a leer el caracter.

Preguntas:

 ¿Qué tipo de excepción es CadenaNoValidaExcepcion?


 Cuando se declaró el método pedirCadena al final de la firma del método se agregó throws
CadenaNoValidaExcepcion. ¿Podríamos omitir esa sentencia? ¿Si,no y Por qué?
 ¿Qué pasa sino captura la excepción lanzada por el método pedirCadena en la clase
principal?

Potrebbero piacerti anche