请高手指点

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)是什么意思?
谢谢!
...全文
107 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
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行.

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧