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

mar*_*nus 5 language-agnostic debugging

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

try {
    m.invoke(parentObject, paramObj);
} catch (IllegalArgumentException e) {
    new CaseLibException(e);
} catch (IllegalAccessException e) {
    new CaseLibException(e);
} catch (InvocationTargetException e) {
    new CaseLibException(e);
}
Run Code Online (Sandbox Code Playgroud)

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

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

For*_*ner 19

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

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


Ed *_* S. 11

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

if (x = 0) {
...
}
Run Code Online (Sandbox Code Playgroud)

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

小智 6

  I=1
Run Code Online (Sandbox Code Playgroud)

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

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

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

"咦?" 他说.

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

 I=I+1
Run Code Online (Sandbox Code Playgroud)

而不是我写的.

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

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


hen*_*000 5

一旦我编写了一个函数来将日期时间字符串解析为另一种格式.在其中我有一个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;
Run Code Online (Sandbox Code Playgroud)

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

  • 并且没有默认值...你应该总是有一个默认值! (5认同)
  • 也许默认应该是"十月"! (3认同)

moo*_*baa 5

for i = 0 to ( list.Length - 1 ) do
  begin
  DoSomething( 1 );
  end;
Run Code Online (Sandbox Code Playgroud)

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