黑马程序员技术交流社区

标题: 关于异常的问题 [打印本页]

作者: 郭军亮    时间: 2013-5-13 11:04
标题: 关于异常的问题
本帖最后由 郭军亮 于 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");


作者: 吴文彬    时间: 2013-5-13 11:06
System.out.println(rec.getArea()); 说明这个语句可能会产生异常。所以放在try里面就正常了。
楼主最好把rectal  这个类的代码贴下。
作者: 飞鸟青崖    时间: 2013-5-13 12:28
本帖最后由 飞鸟青崖 于 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.         }
复制代码

作者: 郭军亮    时间: 2013-5-13 16:52
哦  这样啊  懂了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2