本帖最后由 梁志冰 于 2012-9-1 11:22 编辑
首先匿名内部类的前提是:内部类必须继承或实现一个外部的类或者接口。
再则异常抛出的基本原则:功能中用throw关键字抛出了异常,如果没有被catch处理,就必须用throws关键字在函数上进行声明。
最后看一下异常覆盖时的细节:(A)、子类在覆盖父类方法时,如果父类方法抛出异常,子类覆盖的方法只能抛出父类方法异常或者其子集。
(B)、父类方法如果抛出多个异常,子类在覆盖父类方法时,只能抛出父类方法异常的子集。 (C)、如果父类中的方法没有抛出异常。 子类覆盖父类是,绝对不能声明异常。只能进行try catch 。
综上所述,如果匿名内部类的父类中方法声明了异常,那么其子类就可以声明其父类方法的异常或者其子集。
如下示例:
class Inter
{
public void show()throws Exception
{ }
}
class Demo
{
public static void main(String[] args)
{
try
{
new Inter()
{
public void show()throws Exception
{
System.out.println(5/1);
System.out.println(5/0);
}
}.show();
}
catch (Exception e)
{
System.out.println("异常");
}
}
}
|