DelphiでのEProgrammerNotFound例外?


132

Delphi 2009では、SysUtils.pasの425行目にこれが含まれています。

EProgrammerNotFound = class(Exception);
  • これは単にイースターエッグですか、それとも深刻なものですか?
  • この例外はいつ発生しますか?
  • Delphi PrismやFree Pascalにも存在しますか?

Q:この例外クラスはまだDelphi(現在はXE7)で宣言されていますか?A:はい、それも文書化されています

ソフトウェア障害を示す非標準的な方法。

代わりにEProgrammerNotFoundを使用して、実行時に検出されたソフトウェア障害を示すことができます。


4
この例外は最近、Androids UserManagerに関する回答で言及されています。isUserAGoat()関数
mjn


このデザインパターンは正式な名前に値すると思います。ここにも表示されます:YourCodeSucksException
Gungwald

回答:


152

それは長い一日の結果であり、私たちは少しめまいをしていました。(私がチームに参加して以来)何年もの間、コンパイラーのいくつかのエラーメッセージを、最も一般的なエラーの1つを同様のメッセージに置き換えることについては常に冗談を言っていました。社内では、常にさまざまなことや人(主にチーム自体)に対して冗談や冗談を言ってきました。ユーモアのセンスがないなら、あなたは初期の墓に運命づけられています。

それは単純な会話でした。

「ああ、その関数でEProgrammerNotFound例外が発生しているはずです。」
「LOL!その例外を追加して、誰が気付くかを確認する必要があります。」
「なぜそこにあるのかについて、どのくらいの憶測があるのだろうか?」

だから、私が言えることは、「あなたはみな私たちの手に直接入った;-)...ブワハハハ!


9
これはトロンで最も一般的な例外ではありませんか?
LaKraven、2011

1
そのような例外があることはかなり合理的です。私は常にこの例外をENotImplementedExceptionと見なしています
stanleyxu2005 '28

6
@ stanleyxu2005、そのため、ENotImplemented例外を使用できます。
TLama 2013年

カスタムがありますEProgrammerExceptionEProgr...コードインサイトが表示されたとき、私は完了するためにコードを入力していましたEProgrammerNotFound。悲しいことEProgrammerNotFoundに、私のEProgrammerException子孫は使用できませんEInvisibleException。これは、アサーションの失敗とEAbort例外の間のクロスを意味していました(プログラマーが何かを台無しにしているのを見つけたので、ここで停止します)。
Ian Boyd

24

これは、プログラマーがexeファイルにリンクされている必要がある "fix-inline"テクノロジーと組み合わせて使用​​されます;-)


20

これは、デルファイ、2010年に現在まだ、デルファイ2009年に導入され、た、最近いくつかのだより上の注意インターネットを

EBCAK」(椅子とキーボードの間のエラー)に似たイースターエッグで、Delphiバージョン番号13がスキップされていると思います。

EProgrammerNotFound

  • SysUtilsユニットのWin32ブランチで宣言されていますが、RTLまたはVCLのどこでも使用されていません
  • Delphi Prismには存在しません
  • Delphi 2009で導入されたため、VCL.NETには存在しません
  • 現在(バージョン3.5)は.NETフレームワークに類似したものはありません(理由はわかりませんが、これらの人はユーモアを持っています

私はEProgrammerNotFoundが実際に使用されることを意図しているとは思いませんが、そこにあるので、人々は冗談でそれを使用します(他の誰かのソースコードに「const False = True; True = not False;」というように)。

--jeroen


2
うーん、プログラマーは人間であるだけでなく、デバイスでもあります(埋め込みデバイスのフラッシュなどのプログラミング用)。ここにiPhoneの匂いがしますか?ああ、それはsysutilsではなくIDEソースにあります。
Marco van de Voort、2010年

8
EBCAK?いつもPEBKACと表現されていると聞きました。(キーボードと椅子の間に問題があります)。
メイソンウィーラー

11

起源は議論の余地がありますが、それはしばらくの間知られています...
マルコ・カントゥは「デルファイの楽しい側」セッションでそれについて冗談を言いました。
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>


5

これは、コンパイラーの「構文エラー:プログラマーの予想」の実行時の類似物です。;>


2
Jiveにローカライズされたコンパイラー文字列を使用したビルドを見たはずです!
dthorpe

4

それは一種の自己記述的な冗談です、あなたはこのコードを試すことができます

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

または

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

上記はDelphi 10 Seattleで機能します。


3

プログラマーでは、参照されるのはDelphiの後ろに座っているプログラマーではありません。D2009以降では、すべてのオブジェクトが待機可能になるように計画されていた(これが機能するかどうかわからない)ために使用されたと思います。


実際に使えます。あなたはに任意のオブジェクトを渡すことができますTMonitor.Enterし、TMonitor.Exit。そして、イースターエッグかどうかは
わかり

1
待機可能なオブジェクトは、プログラマーとどのように関係しているのでしょうか。そして、どのプログラマ参照されていますか?
ロブ・ケネディ

0

私はプログラマーですが、例外ですか?

マルコカントゥは、このことを彼の著書「Delphi 2009ハンドブック」(242ページ)でも説明しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.