子类覆写父类的方法时,如果父类的方法进行了异常声明了,子类可以不理会这个声明,不需要进行异常声明。
packagecom.vitamin.Console;
importjava.lang.Throwable;

publicclassexceptionTest

{
publicstaticvoidmain(String[]args)throwsException

{
//TODOAuto-generatedmethodstub]
derived=newderive();
d.process();
}

}
classmyExceptionextendsException

{
myException()

{
super();
}
}
classbase

{
publicbase()

{
}
publicvoidprocess()throwsmyException

{
System.out.println("process()inbaseclass");
thrownewmyException();
}
}
classderiveextendsbase

{
publicderive()

{
super();
}
publicvoidprocess()

{
System.out.println("process()inderivedclass");
}
}
2.如果你先用父类catch掉了异常,那子类异常的catch块就不能到达,编译器就会报错:
packagecom.vitamin.Console;
importjava.lang.Throwable;

publicclassexceptionTest

{
publicstaticvoidmain(String[]args)throwsException

{
//TODOAuto-generatedmethodstub]
try

{
thrownewexception2();
}
catch(myExceptionex)

{
System.err.println(ex.getMessage().toString());
}
catch(exception2ex)

{
System.err.println(ex.getMessage().toString());
}
}

}
classmyExceptionextendsException

{
myException()

{
super();
}
}
classexception2extendsmyException

{
publicexception2()

{
super();
}
}
这种用法编译器是会报错的,应该用防止父类屏蔽掉子类异常处理。
本文探讨了Java中子类如何处理父类抛出的异常,包括子类是否必须声明父类已声明的异常,以及如何避免父类异常捕获导致子类异常处理失效的问题。
171

被折叠的 条评论
为什么被折叠?



