请帮助我,我无法找出它没有被编译的原因!它抛出"必须被捕获或声明被抛出a.eat()"错误。 感谢。
class Animal
{
public void eat() throws Exception
{
System.out.println("Baseclass eat()");
}
}
class Dog extends Animal
{
public void eat() throws ArithmeticException
{
System.out.println("Subclass eat()");
}
}
class eg4psp
{
public static void main(String gg[])
{
try
{
Animal a = new Dog();
Dog d = new Dog();
a.eat();
d.eat();
}
catch(ArithmeticException ae)
{
System.out.println(ae);
}
}
}
答案 0 :(得分:1)
您正在调用a.eat()
,因此就编译器而言,任何 Exception
都可以抛出 - 它只关心编译时间类型a
。 (a
的值不是Dog
的引用,Dog.eat
只引用ArithmeticException
。
因此,在调用a.eat()
的代码中,您必须声明 方法(main
)抛出Exception
,或者抓住它