在Delphi中EProgrammerNotFound异常?


132

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

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

问:此异常类是否仍在Delphi(当前为XE7)中声明?答:是的,甚至有文件记载

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

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


4
最近在有关Androids UserManager答案中提到了此异常。isUserAGoat()函数
MJN


我认为这种设计模式应有一个正式名称。我也在这里看到它:YourCodeSucksException
Gungwald '19

Answers:


152

这只是漫长的一天的结果,我们有点头晕。许多年来(自从我加入团队以来),我们总是开玩笑说要用类似的消息将最常见的错误之一替换为编译器中的一些错误消息。在内部,我们总是对不同的事物和人员(主要是团队本身)开玩笑和挑逗。如果您没有幽默感,那么您注定会很早就丧命。

这是一个简单的对话;

“哦,您应该在该函数中引发EProgrammerNotFound异常。”
“大声笑!我们应该添加该例外,然后看看谁注意到了。”
“我想知道为什么会有这样的猜测吗?”

所以,我想我只能说:“你们都玩了;-)... Buwahahaha!


9
这不是Tron中最常见的例外吗?
LaKraven

1
有这样的例外是很合理的。我始终将此异常视为ENotImplementedException
stanleyxu2005'4

6
@ stanleyxu2005,为此您可以使用ENotImplemented异常。
TLama

我有一个习惯EProgrammerExceptionEProgr...当代码洞察力提示我时,我正在键入代码以完成操作EProgrammerNotFound。可悲的是我无法使用EProgrammerNotFound,因为我的EProgrammerException后代EInvisibleException; 因为这意味着断言失败和EAbort异常之间的交叉(我抓住了程序员搞砸的东西,我将在这里停止)。
伊恩·博伊德


20

它是在Delphi 2009中引入的,现在仍在Delphi 2010中存在,最近Internet上引起了更多关注。

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

EProgrammerNotFound

  • 在SysUtils单元的Win32分支中声明,但未在RTL或VCL中的任何位置使用
  • 在Delphi Prism中不存在
  • 是在Delphi 2009中引入的,因此在VCL.NET中不存在
  • .NET框架中目前(版本3.5)没有类似内容(不确定为什么,这些人确实很幽默

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

--jeroen


2
嗯,程序员不仅是人,而且还是设备(用于编程,例如嵌入式设备的闪存)。我在这里闻到iPhone的味道吗?不,那么它将在IDE源文件中,而不是sysutils。
Marco van de Voort,2010年

8
EBCAK?我一直听到它表示为PEBKAC。(键盘和椅子之间存在问题)。
梅森惠勒2010年


5

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


2
您应该已经看到带有本地化为Jive的编译器字符串的构建!
dthorpe 2012年

4

这是一种自我描述的笑话,您可以尝试以下代码

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

要么

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

以上工作在Delphi 10 Seattle中。


3

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


实际上,它是可用的。您可以将任何对象传递给TMonitor.EnterTMonitor.Exit。而且我不确定是否是复活节彩蛋...
jpfollenius 2010年

1
可等待的对象与程序员有什么关系,或者是否可以找到它们?什么程序员被引用?
罗伯·肯尼迪

0

我是程序员,是我的例外吗?

MarcoCantù在他的《 Delphi 2009手册》(第242页)中也对此进行了描述。他说,VCL源代码中从未提到过它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.