Delphi数据越界问题真是一个令人头疼的问题。昨天调试最近写的一个程序,本来没做优化,应该是执行的很慢,但是,一运行就结束了。单步跟了一下,发现很多的断点根本没有执行,狂晕!然后狂打断点,终于发现了一个很灵异的地方,然后跟进去,还是莫名其妙的结束了,原来异常就在这个地方,加一个try..except,抓住了,但是由于是调用了一个函数,于是仔细盯了一遍这个函数,原来,数据的下标写错了!异常啊,可惜的是,Delphi对数组的越界是不做检查的!
接下来请教下各位大侠:
1.关于Try Except End.Delphi的相关书籍上说,一般不要用这个结构,因为一旦有问题,Delphi会抛出相应的异常,所以,用户不必操心,毕竟这个也存在一个系统的开销。那么问题是,各位对这个怎么看?ps:菜鸟,分少,请见谅。

解决方案 »

  1.   

    编译的时候,DELPHI编译器下边有提示的,还有警告的,平时注意看下
    异常处理还是有必要加的
    越界只能你自己去找错误了 
      

  2.   

    异常处理也有必要的时候,比如在一个循环的线程里面,肯定会碰到各种情况。为了保证这个循环能一直进行下去。添加try except end;还是很有必要哦。我个人认为的。
      

  3.   

    数组使用 Length、Low、High函数,好像不太听人说Delphi的数组越界问题令人头疼。那本"Delphi相关的书籍",简直就是误人子弟,该加Try Except End.就必须加。
      

  4.   

    汗颜之至!我已经全部加上了,呵呵,马上就检测到异常,而且也是访问TList越界,系统默认的并不报,但是加上之后满上就报了。至于那本书,呵呵,好像是《Delphi从入门到精通》。ps:try finall end这个结构我倒是印象深刻,一旦有要收尾的操作,我就会马上添加,立即写上收尾的代码。各位都是经验之谈,定当记住、改正,谢谢大家了。
      

  5.   

    try except end是捕捉异常,try finally end是保证资源得到释放,楼上把finally那个单词都写错了,看来还需要进一步理解try finally end,呵呵可以不客气的说《Delphi从入门到精通》那本书写的很烂。
      

  6.   

    try except end这类的性能损失,基本可以不计,性能优化主要放在算法优化上,这才是王道。
      

  7.   

    你的回答让我很纠结
    《Delphi从入门到精通》那本书写的很烂。????