62,628
社区成员
发帖
与我相关
我的任务
分享class test
{
public static int method1(excep z)//建立一个方法,接收类excep的对象e
{
try
{
return z.division(5,-1);
}
/* catch(Exception m)
{
System.out.println("ArithmeticException:Can't divide by zero!");
}*/
catch(divisione j)//如果调用e.fn1(5,-1);方法,捕获并处理这条除数不能为负数的异常
{
System.out.println("除数不能为负数!");
System.out.println(j.toString());
}
return 0;
}
public static void main(String[] args)
{
excep e=new excep();//建立类excep的实例化对象e
childexcep ex=new childexcep();
method1(e);
System.out.println("finish");//验证是否执行该条语句。这条代码也能执行了。但是如果主函数中的try语句有return语句时,其没有发生异常时,该条语句就不再执行。但finally语句还是会执行。
}
}
但是如果我是这样编写,就能通过编译并能够捕获自定义异常类divisione和处理异常。代码如下:
class test
{
public static void main(String[] args)
{
excep e=new excep();//建立类excep的实例化对象e
childexcep ex=new childexcep();
try
{
ex.fn1(5,-1);
//ex.division(5,-1);//调用子类的division方法。子类的division方法覆盖了父类中的division方法。
System.out.println("exception");
return;
}
catch(ArithmeticException m)
{
System.out.println("ArithmeticException:Can't divide by zero!");
}
catch(divisione j)//如果调用e.fn1(5,-1);方法,捕获并处理这条除数不能为负数的异常
{
System.out.println("除数不能为负数!");
System.out.println(j.toString());
}
catch (Exception n)
{
System.out.println("Can't divide by zero!!!");//自己定义输出的字符串。
System.out.println(n.getMessage());
System.out.println(n.toString());
n.printStackTrace();
}
finally
{
System.out.println("finally!");
}
System.out.println("finish");
}
}
其输出结果如下:
除数不能为负数!
divisione:Divisor can't be minus!!
finally!
finishpublic static void main(String[] args)
{
excep e=new excep();//建立类excep的实例化对象e
childexcep ex=new childexcep();
try
{
ex.fn1(5,-1);
System.out.println("exception");
return;
}
catch(ArithmeticException m)
{
System.out.println("ArithmeticException:Can't divide by zero!");
}
catch(divisione j)//如果调用e.fn1(5,-1);方法,捕获并处理这条除数不能为负数的异常
{
System.out.println("除数不能为负数!");
System.out.println(j.toString());
}
catch (Exception n)/。
{
System.out.println("Can't divide by zero!!!");//自己定义输出的字符串。
System.out.println(n.getMessage());
System.out.println(n.toString());
n.printStackTrace();
}
finally
{
System.out.println("finally!");
}
System.out.println("finish");
} ,你的代码可读性更好,现在显得很乱
因为已经被第一个捕获了就不会往下走了呀,因为你第一个是Excepton捕获