标题: 异常问题 [打印本页] 作者: 李会启 时间: 2012-3-9 21:09 标题: 异常问题 class NoVauleException extends Exception
{
NoVauleException (String message)
{
super (message);
}
}
class rec
{
private int len,wid;
rec(int len,int wid) throws NoVauleException
{
if(len<=0 || wid<=0)
throw new NoVauleException ("出现非法值");
this.len=len;
this.wid=wid;
}
public void getarea()
{
System.out.println(len*wid);
}
}
class circle
{
private int r;
circle(int r) throws NoVauleException
{
if (r<=0)
throw new NoVauleException("错误值");
this.r=r;
}
public void getarea()
{
System.out.println(r*r*3.14);
}
}
public class FinalDemo
{
public static void main(String[] args)
{
try
{
rec r = new rec(-3,4);
r.getarea();
circle a=new circle(3);
a.getarea();
}
catch(NoVauleException e)
{
System.out.println(e.toString());
}
}
}
当长方形的数值非法的时候不能计算,但是为什么圆的面积也不能计算呢,作者: 黑马肖凯骏 时间: 2012-3-9 21:26
try
{
rec r = new rec(-3,4); //当执行到这句的时候,就直接跳转到catch中去了 所以执行不到
r.getarea();
circle a=new circle(3);
a.getarea();
} 作者: 乔玉吉 时间: 2012-3-9 23:45
你如果想看到圆的面积被打印出来,可以把try中的求圆面积的代码放上面,
因为一旦符合异常条件,try就会捕捉到异常并停止运行下面的代码,直接跳到catch中去(如果没有catch就代表异常没有被处理过,
如果该异常是检测时异常.那么必须声明)
try
{
circle a=new circle(3);
a.getarea();
rec r = new rec(-3,4);
r.getarea();
}作者: 王睿 时间: 2012-3-9 23:59
执行到这里 rec r = new rec(-3,4);
就去执行chcth中的代码了,程序已经停止了,所以不能执行了作者: 王杰 时间: 2012-3-10 00:43
当执行到rec r = new rec(-3,4); 的时候,系统捕获异常,执行catch代码块。
所以rec r = new rec(-3,4); 后面的语句就没有被执行到。作者: a504079589 时间: 2012-3-10 02:58
应为try{}中捕捉到了异常rec r = new rec(-3,4); 就会停止下面的执行,会自动执行catch中的语句;作者: 刘豪杰 时间: 2012-3-10 10:51
try
{
rec r = new rec(-3,4);
r.getarea();
circle a=new circle(3);
a.getarea();
}
当执行到 rec r = new rec(-3,4);时,由于出现了非法数字,程序就停止了try内的程序,抛出一个异常,然后开始执行catch里边的代码,catch里的代码执行完了,接着执行catch后边的代码;也就是说长方形那里出现异常后,其后边的
r.getarea();
circle a=new circle(3);
a.getarea();
这几步就跳过,不执行了,所以没有圆的面积