web-dev-qa-db-fra.com

EProgrammerNotFound exception dans Delphi?

Dans Delphi 2009, SysUtils.pas contient ceci à la ligne 425:

EProgrammerNotFound = class(Exception);
  • Est-ce simplement un œuf de Pâques ou quelque chose de grave?
  • Quand cette exception doit-elle être levée?
  • Existe-t-il également dans Delphi Prism et/ou Free Pascal?

Q: Cette classe d'exception est-elle toujours déclarée dans Delphi (actuellement XE7)? R: Oui, et c'est même documenté !

Manière non standard d'indiquer les défauts du logiciel.

Vous pouvez utiliser EProgrammerNotFound comme alternative pour indiquer les défauts logiciels détectés lors de l'exécution.

126
mjn

C'est juste le résultat d'une longue journée et nous étions un peu étourdis. Pendant de très nombreuses années (depuis que je faisais partie de l'équipe), nous avions toujours plaisanté sur le remplacement d'un message d'erreur dans le compilateur pour l'une des erreurs les plus courantes par un message similaire. En interne, nous avons toujours plaisanté et nous sommes moqués de différentes choses et personnes (principalement de l'équipe elle-même). Si vous n'avez pas le sens de l'humour, vous êtes destiné à une tombe précoce.

C'était une simple conversation;

"Oh, vous auriez dû lever l'exception EProgrammerNotFound dans cette fonction."
"LOL! Nous devrions ajouter cette exception et voir qui le remarque."
"Je me demande combien il y aura de spéculations sur la raison de son existence?"

Donc, je suppose que tout ce que je peux dire, c'est: "Vous avez tous joué entre nos mains; -) ... Buwahahaha! Pwned!"

144
Allen Bauer

Il est utilisé en conjonction avec la technologie "fix-inline" qui nécessite que le programmeur soit lié au fichier exe ;-)

23
Uwe Raabe

Il a été introduit dans Delphi 2009, toujours présent dans Delphi 2010, et récemment a obtenu plus l'attention sur internet .

Je pense que c'est un œuf de Pâques, similaire à " EBCAK " (Erreur entre la chaise et le clavier), et le saut du numéro de version 13 de Delphi .

EProgrammerNotFound

  • est déclaré dans la branche Win32 de l'unité SysUtils, mais n'est utilisé nulle part dans le RTL ou la VCL
  • n'est pas présent dans Delphi Prism
  • a été introduit dans Delphi 2009, donc pas présent dans VCL.NET
  • n'a actuellement (version 3.5) rien de similaire dans le framework .NET (je ne sais pas pourquoi, ces gars-là ont de l'humour )

Je ne pense pas que EProgrammerNotFound soit en fait destiné à être utilisé, mais comme il est là, les gens l'utiliseront en plaisantant (comme si l'on mettait un "const False = True; True = not False;" dans un autre code source).

--jeroen

19

L'Origine est discutable, mais elle est connue depuis un moment ...
Marco Cantu a plaisanté à ce sujet lors d'une session "Fun Side of Delphi".
OMI, il devrait être utilisé plus souvent ; -)

Continuer à lire:
http://wings-of-wind.com/2010/01/12/best-programming-feature-ever/
http://blog.barrkel.com/2008/11/reference-counted-pointers-revisited.html

PS: Je ne pense pas que ça existe en Delphi Prism, FreePascal ou C # (mais ça devrait). <G>

10
François

C'est l'analogue d'exécution de "Erreur de syntaxe: programmeur attendu" du compilateur. ;>

4
dthorpe

C'est une sorte de blague auto-descriptive, vous pouvez essayer ce code

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

ou

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

Ce qui précède fonctionne dans Delphi 10 Seattle.

1
LaBracca