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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夜写意 中级黑马   /  2013-7-21 16:36  /  1430 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 夜写意 于 2013-7-24 19:12 编辑

是看毕老师视频的时候碰到的。
程序也是按照视频上的打的,大同小异。
在建立长方形和圆的对象的时候,先建立长方形的对象,然后再建立圆的。
现在问题出来了,如果长方形的长和宽的数值是符合规则的,就会输出长方形的面积,并且执行建立圆的对象的步骤。如果长方形那步出了异常,圆那步就跳过了。
是不是RuntimeException就是这样的?还是因为我用的是eclipse的原因?
下面是代码

  1. /*
  2. * 有一个圆形和长方形。都可以获取面积。对于面积如果出现非法的数值,视为是获取面积出现问题。
  3. * 问题通过异常来表示。
  4. *
  5. * */
  6. interface Shape
  7. {
  8.                 void getArea();
  9. }

  10. class CdException extends RuntimeException
  11. {
  12.         CdException(String message)
  13.         {
  14.                 super(message);
  15.         }
  16. }
  17. class Rec implements Shape
  18. {
  19.         private int len,wid;
  20.         Rec(int len, int wid)
  21.         {
  22.                 if (len <=0 || wid <=0)
  23.                         throw new CdException("2222错误!");
  24.                 this.len = len;
  25.                 this.wid = wid;
  26.         }
  27.         public void getArea()
  28.         {        
  29.                         System.out.println(len*wid);
  30.         }
  31. }
  32. class Circle implements Shape
  33. {
  34.         private int r;
  35.         public static final double pi=3.14;
  36.         Circle (int r)
  37.         {
  38.                 if (r <= 0)
  39.                         throw new CdException("数组错误!");
  40.                 this.r=r;
  41.         }
  42.         public void getArea()
  43.         {
  44.                 System.out.println(r*r*pi);
  45.         }
  46. }
  47. public class YCTest
  48. {
  49.         public static void main(String[] args)
  50.         {
  51.                 Rec r = new Rec(-5,6);
  52.                 r.getArea();
  53.                 Circle c = new Circle(5);//如果new Rec(-5,6)出现异常,这里就跳过了。
  54.                 c.getArea();
  55.         }
  56. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

3 个回复

正序浏览
夜写意 发表于 2013-7-21 16:58
意思就是说使用RuntimeException抛出的话,一遇到问题就会停止程序运行。如果想要之后的继续运行就不能用 ...

try{
  Rec r = new Rec(-5,6);
        r.getArea();   
}catch(CdException  c){
System.out.println(c.getMessage());
}
Circle c = new Circle(5);
         c.getArea();
这样你把方法抛出的异常处理掉,程序就可以继续运行了。
注意我最后两句代码放的位置
回复 使用道具 举报
于世德 发表于 2013-7-21 16:47
Rec r = new Rec(-5,6);这段代码如果抛出异常,而你有没有进行catch处理,这个异常会向上抛给jvm,那么jvm会 ...

意思就是说使用RuntimeException抛出的话,一遇到问题就会停止程序运行。如果想要之后的继续运行就不能用RuntimeException了是吗?
回复 使用道具 举报
Rec r = new Rec(-5,6);这段代码如果抛出异常,而你有没有进行catch处理,这个异常会向上抛给jvm,那么jvm会终止程序的运行,所以你程序中的这段代码之后的所有代码都不会执行。

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马