Java - Restricciones de las Excepciones

 
Vista:

Restricciones de las Excepciones

Publicado por Jorge (3 intervenciones) el 30/07/2014 12:29:32
Buenos días;
Leyendo el libro de "Piensa en Java" en el capítulo del Tratamiento de errores mediante excepciones,
apartado "Restricciones de las excepciones" hay una parte que no logro entender, he igual alguno de
ustedes pueda resolvérmelo. El ejercicio es el siguiente, solo resumido a la parte que no entiendo...

class BaseballException extends Exception{}
class Foul extends BaseballException{}
class PopFoul extends Foul{}
class Strike extends BaseballException{}
class StormException extends Exception{}
class RainedOut extends StormException{}

abstract class Inning{
public Inning() throws BaseballException{}
public void event() throws BaseballException{}
public abstract void atBat() throws Strike,Foul;
public void walk(){}
}
interface Storm{
public void event()throws RainedOut;
public void rainHard() throws RainedOut;
}
public class StormyInning extends Inning implements Storm {
public StormyInning() throws RainedOut,BaseballException{}
public StormyInning(String s) throws Foul,BaseballException{}
//Una interfaz no puede añadir excepciones a los métodos existentes
// en la clase base:
//!public void event() throws RainedOut{}
//Podemos no generar una excepción aunque la versión base lo haga
public void event(){}
public static void main (String[] args){
}
}

Y la explicación del libro dice así:
La interfaz Storm es interesante porque contiene un método (event()) que esta definido en Inning, y
otro método que no lo está. Ambos métodos generan un nuevo tipo de excepción, RainedOut. Mi primera
pregunta es, ¿no generan dos tipos de excepciones distintas, RainedOut y BaseballException?
Siguiendo con la explicación del libro: Cuando StormyInning amplia (extends) Inning e implementa (implements) Storm,
podemos ver que el método event() de Storm no puede cambiar la interfaz de excepciones de event() definida en Inning.
Y mi pregunta es ¿A que se refiere este párrafo?.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Restricciones de las Excepciones

Publicado por Tom (1831 intervenciones) el 30/07/2014 12:52:07
Pues aparte de que haya erratas y código no no compilable ... en este caso no puedes declarar el método event() de StormyInning para que eleve ni RainedOut ni BaseballException ya que en ambos casos estarías incumpliendo el interface o su clase base ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Restricciones de las Excepciones

Publicado por Jorge (3 intervenciones) el 31/07/2014 10:28:35
Gracias por tu respuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar