EProgrammerNotНайдено исключение в Delphi? - PullRequest
114 голосов
/ 18 января 2010

В Delphi 2009 SysUtils.pas содержит это в строке 425:

EProgrammerNotFound = class(Exception);
  • Это просто пасхальное яйцо или что-то серьезное?
  • Когда должно возникать это исключение?
  • Существует ли оно также в Delphi Prism и / или Free Pascal?

Q: Этот класс исключений все еще объявлен в Delphi (в настоящее времяXE7)?A: Да, и это даже задокументировано !

Нестандартный способ указания программных ошибок.

Вы можете использовать EProgrammerNotFound в качестве альтернативы для индикации обнаруженных программных ошибокво время выполнения.

Ответы [ 8 ]

137 голосов
/ 18 января 2010

Это всего лишь результат долгого дня, и мы почувствовали легкое головокружение.В течение многих, многих лет (с тех пор, как я был в команде), мы всегда шутили о замене некоторого сообщения об ошибке в компиляторе для одной из самых распространенных ошибок аналогичным сообщением.Внутренне мы всегда шутили и издевались над разными вещами и людьми (в основном в самой команде).Если у вас нет чувства юмора, вам предстоят ранние могилы.

Это был простой разговор;

"О, вы должны были вызвать исключение EProgrammerNotFound в этой функции."«LOL! Мы должны добавить это исключение и посмотреть, кто заметит».«Интересно, сколько будет спекуляций о том, почему это там?»

Итак, я думаю, все, что я могу сказать, это: «Вы все играли прямо в наши руки; -) ... Buwahahaha!Позор! "

22 голосов
/ 18 января 2010

Используется вместе с технологией «fix-inline», которая требует, чтобы программист был связан с файлом exe; -)

18 голосов
/ 18 января 2010

Он был представлен в Delphi 2009, до сих пор присутствует в Delphi 2010, а недавно получил больше внимания в интернете .

Я думаю, что это пасхальное яйцо, похожее на « EBCAK » (ошибка между стулом и клавиатурой) и пропуск версии Delphi 13 .

EProgrammerNotFound

  • объявлен в ветке Win32 модуля SysUtils, но нигде не используется в RTL или VCL
  • отсутствует в Delphi Prism
  • был представлен в Delphi 2009, поэтому отсутствует в VCL.NET
  • в настоящее время (версия 3.5) не имеет ничего общего с фреймворком .NET (не уверен, почему у этих парней есть юмор )

Я не думаю, что EProgrammerNotFound на самом деле предназначен для использования вообще, но так как он есть, люди будут в шутку его использовать (подобно тому, как вводить беспризорный const False = True; True =не Ложь; "в чьем-то другом исходник).

- jeroen

9 голосов
/ 18 января 2010

Происхождение спорно, но это было известно некоторое время ...
Марко Канту пошутил об этом во время сеанса «Веселая сторона Дельфи».
ИМО, его следует использовать чаще ; -)

Читать дальше:
http://wings -of-wind.com / 2010/01/12 / лучшее программирование-функция когда-либо /
http://blog.barrkel.com/2008/11/reference-counted-pointers-revisited.html

PS: я не думаю, что он существует в Delphi Prism, FreePascal или C # (но он должен). <G>

3 голосов
/ 24 апреля 2011

Это аналог времени выполнения компилятора «Ошибка синтаксиса: ожидается программист». ;>

2 голосов
/ 18 января 2010

С программистом, это не программист, который сидит за Delphi, на который ссылаются. Я думаю, что это используется для факта, что в D2009 и выше они планировали (никогда не использовали это, не знают, работает ли это), что каждый объект был ожидаемым.

1 голос
/ 29 ноября 2017

Это шутка с самоописанием, вы можете попробовать этот код

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

или

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

Вышеописанное работает в Delphi 10 Seattle.

0 голосов
/ 18 января 2010

Я программист, я исключение?

Марко Канто также описывает это в своей книге «Справочник Delphi 2009» - стр. 242. Он говорит, что в исходном коде VCL он никогда не используется.

...