【问题标题】:EProgrammerNotFound exception in Delphi?Delphi中的EProgrammerNotFound异常?
【发布时间】:2011-01-06 05:57:00
【问题描述】:

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

EProgrammerNotFound = class(Exception);
  • 这仅仅是easter egg 还是什么严重的问题?
  • 何时应引发此异常?
  • 它是否也存在于 Delphi Prism 和/或 Free Pascal 中?

问:这个异常类是否仍然在 Delphi(目前是 XE7)中声明? A:是的,甚至是documented

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

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

【问题讨论】:

标签: delphi delphi-2009 delphi-xe7


【解决方案1】:

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

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

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

以上在 Delphi 10 Seattle 工作。

【讨论】:

    【解决方案2】:

    它在 Delphi 2009 中引入,在 Delphi 2010 中仍然存在,recentlyinternet 上获得了一些more 的关注。

    我认为这是一个复活节彩蛋,类似于“EBCAK”(椅子和键盘之间的错误)和skipping of Delphi version number 13

    EProgrammerNotFound

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

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

    --杰罗恩

    【讨论】:

    • 嗯,程序员不仅是一个人,也是一个设备(用于编程,例如嵌入式设备的闪存)。我在这里闻到 iPhone 的味道吗?不,那么它将在 IDE 源中,而不是 sysutils。
    • EBCAK?我总是听到它表示为PEBKAC。 (键盘和椅子之间存在问题)。
    【解决方案3】:

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

    【讨论】:

    • 您应该已经看到编译器字符串本地化为 Jive 的构建!
    【解决方案4】:

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

    这是一次简单的对话;

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

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

    【讨论】:

    • 这不是 Tron 中最常见的异常吗?
    • 有这样的例外是很合理的。我一直将此异常视为 ENotImplementedException
    • @stanleyxu2005,为此您可以使用ENotImplemented 例外。
    • 我有一个自定义的EProgrammerException。当代码洞察力向我显示EProgrammerNotFound 时,我正在输入代码以完成EProgr...。遗憾的是我不能使用EProgrammerNotFound,因为我的EProgrammerExceptionEInvisibleException 的后裔;因为它意味着断言失败和EAbort 异常之间的交叉(我发现一个程序员搞砸了,我要在这里停下来)。
    【解决方案5】:

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

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

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

        【讨论】:

        • 其实是可以用的。您可以将任何对象传递给TMonitor.EnterTMonitor.Exit。而且我不确定它是否是复活节彩蛋......
        • 等待的对象与程序员或是否被发现有什么关系?什么程序员被引用?
        【解决方案8】:

        起源是有争议的,但它已经为人所知了一段时间......
        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>

        【讨论】:

          猜你喜欢
          • 2015-02-01
          • 2012-12-21
          • 2011-08-17
          • 1970-01-01
          相关资源
          最近更新 更多