A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李会启 中级黑马   /  2012-3-9 21:09  /  1602 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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());
                }
               
        }
}
当长方形的数值非法的时候不能计算,但是为什么圆的面积也不能计算呢,

6 个回复

倒序浏览
try
                 {
                 rec r = new rec(-3,4); //当执行到这句的时候,就直接跳转到catch中去了 所以执行不到
                 r.getarea();
                 circle a=new circle(3);
                 a.getarea();
                 }
回复 使用道具 举报
你如果想看到圆的面积被打印出来,可以把try中的求圆面积的代码放上面,

因为一旦符合异常条件,try就会捕捉到异常并停止运行下面的代码,直接跳到catch中去(如果没有catch就代表异常没有被处理过,
如果该异常是检测时异常.那么必须声明)
try
{
     circle a=new circle(3);
     a.getarea();

     rec r = new rec(-3,4);
     r.getarea();
}
回复 使用道具 举报
执行到这里 rec r = new rec(-3,4);
就去执行chcth中的代码了,程序已经停止了,所以不能执行了
回复 使用道具 举报
当执行到rec r = new rec(-3,4); 的时候,系统捕获异常,执行catch代码块。
所以rec r = new rec(-3,4); 后面的语句就没有被执行到。
回复 使用道具 举报
应为try{}中捕捉到了异常rec r = new rec(-3,4); 就会停止下面的执行,会自动执行catch中的语句;
回复 使用道具 举报
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();
这几步就跳过,不执行了,所以没有圆的面积
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马