141

在 Delphi 2009 中,SysUtils.pas 在第 425 行包含以下内容:

EProgrammerNotFound = class(Exception);
  • 这只是一个复活节彩蛋还是严重的事情?
  • 什么时候应该提出这个例外?
  • 它是否也存在于 Delphi Prism 和/或 Free Pascal 中?

问:这个异常类还在 Delphi(目前是 XE7)中声明吗?A: 是的,它甚至被记录在案

指示软件故障的非标准方式。

您可以使用 EProgrammerNotFound 作为替代方法来指示在运行时检测到的软件故障。

4

8 回答 8

160

这只是漫长的一天的结果,我们有点头晕目眩。很多很多年(自从我加入团队以来),我们总是开玩笑说用类似的消息替换编译器中的一些错误消息,以替换最常见的错误之一。在内部,我们总是对不同的事情和人(主要是团队本身)开玩笑和取笑。如果你没有幽默感,你注定要早早死去。

这是一次简单的谈话;

“哦,你应该在那个函数中引发 EProgrammerNotFound 异常。”
“哈哈!我们应该添加那个例外,看看谁注意到了。”
“我想知道为什么会有多少猜测?”

所以,我想我只能说,“你们都玩到了我们的手中;-)...... Buwahahaha!pwned!”

于 2010-01-18T19:37:36.377 回答
24

它与要求程序员必须链接到 exe 文件的“修复内联”技术结合使用;-)

于 2010-01-18T07:47:09.017 回答
21

它是在 Delphi 2009 中引入的,在 Delphi 2010 中仍然存在,最近在互联网上得到了更多关注。

我认为这是一个复活节彩蛋,类似于“ EBCAK ”(椅子和键盘之间的错误),以及Delphi 版本号 13 的跳过

EProgrammerNotFound

  • 在 SysUtils 单元的 Win32 分支中声明,但不在 RTL 或 VCL 中的任何地方使用
  • Delphi Prism 中不存在
  • 在 Delphi 2009 中引入,因此在 VCL.NET 中不存在
  • 目前(3.5 版)在 .NET 框架中没有类似的东西(不知道为什么,这些人确实很幽默

我不认为 EProgrammerNotFound 实际上是要使用的,但既然它在那里,人们会开玩笑地使用它(类似于在别人的源代码中放置一个流浪的“const False = True; True = not False;”)。

——杰伦

于 2010-01-18T08:39:58.450 回答
11

起源是有争议的,但它已经为人所知了一段时间......
Marco Cantu 在“德尔福有趣的一面”会议上开玩笑说。
IMO,应该更频繁地使用它;-)

继续阅读:
http :
//wings-of-wind.com/2010/01/12/best-programming-feature-ever/ http://blog.barrkel.com/2008/11/reference-counted-pointers-revisited .html

PS:我不认为它存在于 Delphi Prism、FreePascal 或 C# 中(但它应该存在)。<G>

于 2010-01-18T06:24:23.390 回答
5

它是编译器“语法错误:程序员预期”的运行时模拟。;>

于 2011-04-24T00:28:27.993 回答
4

这是一种自我描述的笑话,你可以试试这段代码

raise EProgrammerNotFound.Create('Jack is away');

或者

raise ENotImplemented.Create('May be in future this will work');

以上工作在 Delphi 10 Seattle。

于 2017-11-29T10:46:12.940 回答
3

对于程序员,引用的不是坐在 Delphi 后面的程序员。我认为它用于在 D2009 及更高版本中他们计划(从未使用它不知道它是否有效)每个对象都是可等待的事实。

于 2010-01-18T06:35:45.873 回答
0

我是程序员,难道我是个例外吗?

Marco Cantù 在他的书“Delphi 2009 手册”-第 242 页中也描述了这一点。他告诉我们在 VCL 源代码中从来没有开玩笑。

于 2010-01-18T08:33:56.900 回答