当前位置:  开发笔记 > 编程语言 > 正文

什么是你很久没找到的最愚蠢的错误?

如何解决《什么是你很久没找到的最愚蠢的错误?》经验,为你挑选了5个好方法。

我正在研究一个错过了项目的项目,由于某些原因,即使应该有例外也没有例外.在内心深处,我发现了这种错误处理:

try {
    m.invoke(parentObject, paramObj);
} catch (IllegalArgumentException e) {
    new CaseLibException(e);
} catch (IllegalAccessException e) {
    new CaseLibException(e);
} catch (InvocationTargetException e) {
    new CaseLibException(e);
}

我的大脑认识到有几个例外被包裹在另一个中,所以这并不是那么糟糕.但我不得不偶然发现这段代码至少3次,看看有什么遗漏......

你找不到的最愚蠢的bug是什么?



1> Fortyrunner..:

我修复了一个错误,每天应用程序在每天下午6:12崩溃.

原来有人在16bit int中存储了自当天开始以来的秒数.



2> Ed S...:

在C/C++中(我最近学到的)

if (x = 0) {
...
}


防止它的一种简单方法是相反地编写它:if(0 == x)。如果您忘记了第二个=代码将无法编译。
或者使用具有半体面警告的编译器.

3> 小智..:
  I=1

Fortran的那一行根本就没用了.

经过几个小时无果而终的调试后,我吞下了自己的骄傲,并和我一起走过代码.

来到那条线,我说,"现在我们增加下标."

"咦?" 他说.

就在那时我才意识到我正在读我的意图:

 I=I+1

而不是我写的.

请记住,下次你被卡住而无法弄清楚出了什么问题.

不要让你的骄傲阻止你招募第二双眼睛.



4> henry000..:

一旦我编写了一个函数来将日期时间字符串解析为另一种格式.在其中我有一个switch/case语句来解析月份值,它看起来像这样:

case month of:
  01: return "Jan"; break;
  02: return "Feb"; break;

  ... etc ...

  09: return "Sep"; break;
  11: return "Nov"; break;
  12: return "Dec"; break;
end;

出于某种原因,我在10月份遗漏了......


并且没有默认值...你应该总是有一个默认值!
也许默认应该是"十月"!

5> moobaa..:
for i = 0 to ( list.Length - 1 ) do
  begin
  DoSomething( 1 );
  end;

尝试在凌晨3点用一个小字体在一个糟糕的显示器上找到!;)

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有