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?.
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


0