请高手指点

sirsus1981 2006-03-17 03:16:34
在写手机游戏中如果出现空指针或是其他异常时:

Running with storage root DefaultColorPhone
java.lang.NullPointerException
at GameCanvas.intEnemy(+8)
at GameCanvas.intAllEnemy(+280)
at GameCanvas.gameLogic(+93)
at GameCanvas.run(+7)
其中at GameCanvas.intEnemy(+8)的(+8)是什么意思?
谢谢!
...全文
89 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
huzhiming_2006 2006-03-26
我觉得还要看代码
回复
sirsus1981 2006-03-21
谢谢
回复
xueyong1203 2006-03-20
最近刚好在看《深入嵌入式Java虚拟机》这本书,上面就是讲得KVM
+8 属于class文件中的LineNumberTable attribute,这个LineNumberTable attribute是为了Debug的目的而存在的,,它的功能是使得调试器能够知道在Java源代码中某两行之间的程序代码是对应于ClassFile结构中 code[]数组的哪个范围内。如果在某个Code attribute中出现了多个LinuNumberTable attribute的话,这些LineNumberTable attribute并不会依照在Java原始文件中的先后顺序来排列。而且对于Java源文件中的某一行,有可能会有多于一个LineNumberTable attribute涵盖到它,也就是说,LineNumberTable attribute与Java源文件中的程序代码并不是一对一对应的

上面都是我从书上抄下来的,有想深入研究的兄弟可以钻研一下 《深入Java虚拟机》
回复
sirsus1981 2006-03-20
上面的问题好像也不是.class文件的行数,
我用反汇编看过.class文件,也对应不起来。
不知道他们之间有没有什么必然的联系。
多谢各位高手帮忙!
回复
sirsus1981 2006-03-20
谢谢各位!
的确不是出错的行数,我是有意让他出现这种异常。
我是想知道,他和源代码之间存在什么样的联系。
是否有什么计算方法,从这些信息中得到出错的行数
回复
cnesky 2006-03-18
我也这么认为:应该不是实际写原代码的行!
不过不明白为什么不指出实际写原代码的行?这样不是可以更好的定位错误的地方吗?
-------------------------------

因为报的错是在游戏运行时产生的,也就是执行编译后的文件时报错
回复
wzjall 2006-03-18
GameCanvas.intEnemy(+8) 可能是编译后的文件的行数,不是你实际写原代码的行。保持良好的编码习惯,在使用对象之前一定要判断

--------------------
我也这么认为:应该不是实际写原代码的行!
不过不明白为什么不指出实际写原代码的行?这样不是可以更好的定位错误的地方吗?
回复
outhunder 2006-03-17
变量可能没有初始化或者声明
回复
贝壳鱼 2006-03-17
GameCanvas.intEnemy(+8) 可能是编译后的文件的行数,不是你实际写原代码的行。保持良好的编码习惯,在使用对象之前一定要判断


if(object != null)
{
//doSomethings
}
回复
图门的世界 2006-03-17
可能理解错误
j2me的不是很懂
回复
图门的世界 2006-03-17
GameCanvas.intEnemy(+8) 应该就是出错的行号.在GameCanvas的第8行.
回复
相关推荐
发帖
J2ME
创建于2007-09-28

1.3w+

社区成员

Java J2ME
申请成为版主
帖子事件
创建了帖子
2006-03-17 03:16
社区公告
暂无公告