专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Eclipse

关于空指针错误的,懂得进下

发布时间:2010-06-05 15:32:29 文章来源:www.iduyao.cn 采编人员:星星草
关于空指针异常的,懂得进下
程序如下:

package cn.qtech.teaching;

  public class Teaching {
  public static void universityPeopleDoDuty(UniversityPeople UP,TeachingMessage TM){
UP.doDuty(TM);
  }
  public void doOneTeaching(){
Teacher tec=new Teacher();
tec.setName("王勇".toCharArray());
Student []stu =new Student[3];
stu[0].setName("张三".toCharArray()); /*第11行*/
stu[1].setName("李四".toCharArray());
stu[2].setName("王五".toCharArray());
TeachingMessage TM=new TeachingMessage();
TM.setState(TeachingState.XUANKE);
Teaching.universityPeopleDoDuty(tec, TM);
TM.setState(TeachingState.TINGKE);
Teaching.universityPeopleDoDuty(tec, TM);
TM.setState(TeachingState.ZUOZUOYE);
Teaching.universityPeopleDoDuty(tec, TM);
TM.setState(TeachingState.BEIKE);
Teaching.universityPeopleDoDuty(stu[0], TM);
TM.setState(TeachingState.BUZHIZUOYE);
Teaching.universityPeopleDoDuty(stu[0], TM);
  }
  public static void main(String args[]){
Teaching TNT=new Teaching();
TNT.doOneTeaching(); /*第28行*/
  }
}
其他需要的类我没贴出来。Eclipse提示空指针异常,报错信息为:
Exception in thread "main" java.lang.NullPointerException
at cn.qtech.teaching.Teaching.doOneTeaching(Teaching.java:11)
at cn.qtech.teaching.Teaching.main(Teaching.java:28)
我表示很不懂,求大虾解释,先谢谢各位了。

------解决方案--------------------
楼上各位都基本说了28行的异常问题。

程序在运行过程中,并不是直接运行第11行的代码,像你写的这个程序是直接找main()方法,从它的第一行开始运行。当运行到TNT.doOneTeaching();时,在内部代码stu[0].setName()这里发生异常了,由于中间没有被捕获(catch),就不沿着调用方往外抛,直到被捕获处理了。

打个比方,就像走队列,如果有一个人走错了没有被人扶正,那么这个排的负责人会知道是这个人走错了,如果没有定义说负责人可以怎么处理这个情况,那他只能把这个异常往整个队列的班长那报。如果再没有定义说班人可以怎么处理这个情况,那班长就只能把这个异常再往年段或系里报。。。直到有人说“OK,我知道怎么办”。所以java异常也是这样,就是沿着这个一层层的调用关系往外抛,直到有哪个层次处理(掩盖什么都不做也是一个处理)。当一直都没有找到处理的时候,控制台就把这个异常的全部调用关系都打出来了,程序员去看日志时候就会发现这个异常。

所以控制台告诉你是第11行出错了,它的调用方是第28行的TNT.doOneTeaching();并不是说第28行也是有错的。
------解决方案--------------------
关于异常的,建议你看看java教材的相应章节,任何涉及java基础语言的教材都会有专门章节说明异常是怎么回事,该怎么捕获或处理你可以预见的或是不可预见的异常。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: