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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭军亮 中级黑马   /  2013-5-13 11:04  /  1093 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郭军亮 于 2013-5-13 16:52 编辑

public static void main(String[] args){
                // TODO Auto-generated method stub

                        rectal rec;
                        
                                try {
                                        rec = new rectal(-2,6);
                                } catch (novalueexception e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                                
                                System.out.println(rec.getArea());//为什么这个地方会报错,但是把它放到try{}内后就正常了
                        
                                System.out.println("over");

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

3 个回复

倒序浏览
System.out.println(rec.getArea()); 说明这个语句可能会产生异常。所以放在try里面就正常了。
楼主最好把rectal  这个类的代码贴下。
回复 使用道具 举报
本帖最后由 飞鸟青崖 于 2013-5-13 12:50 编辑

如果你的rectal没有定义错的话,这里就是因为你没有对rec进行初始化。
只需要把rec赋值就可以了。
因为在try代码块中, rec = new rectal(-2,6);可能执行不了(比如抛出异常),那么这个时候rec就没有指向,无法调用getArea()方法。
  1. public static void main(String[] args)
  2.         {
  3.                  rectal rec = null;[color=Red]//进行了初始化,一般赋值成null就行了。
  4.                         
  5.          try
  6.                  {
  7.                rec = new rectal(-2,6);
  8.          }
  9.                  catch (novalueexception  )
  10.                  {
  11.                e.printStackTrace();
  12.          }
  13.          System.out.println(rec.getArea());//
  14. 还有一点忘了说了,如果 rec = new rectal(-2,6); 真的没有执行,这里还会抛出一个空指针异常。记得处理。
  15.          System.out.println("over");
  16.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
哦  这样啊  懂了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马