EProgrammerDelphi'de istisna bulunmadı mı?


132

Delphi 2009'da, SysUtils.pas bunu 425. satırda içerir:

EProgrammerNotFound = class(Exception);
  • Bu sadece bir paskalya yumurtası mı yoksa ciddi bir şey mi?
  • Bu istisna ne zaman gündeme getirilmelidir?
  • Delphi Prism ve / veya Free Pascal'da da var mı?

S: Bu istisna sınıfı hala Delphi'de (şu anda XE7) bildiriliyor mu? C: Evet ve hatta belgelenmiştir !

Yazılım hatalarını göstermenin standart olmayan yolu.

EProgrammerNotFound'u, çalışma zamanında tespit edilen yazılım hatalarını belirtmek için bir alternatif olarak kullanabilirsiniz.


4
Bu istisna, son zamanlarda Android Kullanıcı Yöneticisi ile ilgili bir yanıtta belirtildi . isUserAGoat () işlevi
mjn


Bu tasarım modelinin resmi bir adı hak ettiğini düşünüyorum. Bunu burada da görüyorum: YourCodeSucksException
Gungwald

Yanıtlar:


152

Bu sadece uzun bir günün sonucuydu ve biraz sersemlemiştik. Uzun yıllar boyunca (takımda olduğumdan beri), derleyicideki bazı hata mesajlarını en yaygın hatalardan biri için benzer bir mesajla değiştirmek konusunda her zaman şaka yaptık. İçsel olarak her zaman farklı şeylere ve insanlara (çoğunlukla takımın kendisinde) şaka ve şaka yaptık. Mizah anlayışınız yoksa, erken bir mezara mahkumsunuzdur.

Basit bir konuşmaydı;

"Oh, bu işlevde EProgrammerNotFound istisnasını yükseltmiş olmalısın."
"LOL! Bu istisnayı eklemeli ve kimin fark ettiğini görmeliyiz."
"Neden orada olduğuna dair ne kadar spekülasyon olacağını merak ediyorum."

Yani, sanırım tek söyleyebileceğim, "Hepiniz doğrudan bizim elimize oynadınız; -) ... Buwahahaha! Pwned!"


9
Bu, Tron'daki en yaygın istisna değil mi?
LaKraven

1
Böyle bir istisnanın olması oldukça makul. Bu istisnayı her zaman ENotImplementedException olarak görüyorum
stanleyxu2005

6
@ stanleyxu2005, bunun için ENotImplementedistisnayı kullanabilirsiniz .
TLama

Benim bir geleneğim var EProgrammerException. EProgr...Kod analizi bana gösterdiğinde tamamlamak için kodu yazıyordum EProgrammerNotFound. Maalesef EProgrammerNotFoundbenim EProgrammerExceptiongeldiği gibi kullanamıyorum EInvisibleException; bir iddia hatası ile EAbortistisna arasında bir geçiş anlamına geldiği için (bir programcıyı bir şeyleri mahvederken yakaladım ve burada duracağım).
Ian Boyd

24

Programcının exe dosyasına bağlanmasını gerektiren "fix-inline" teknolojisi ile birlikte kullanılır ;-)


20

Delphi 2009'da tanıtıldı, Delphi 2010'da hala mevcut ve son zamanlarda internette biraz daha ilgi gördü .

Bence " EBCAK " (Sandalye ve Klavye Arasındaki Hata) ve Delphi sürüm numarası 13'ün atlanması gibi bir paskalya yumurtası .

EProgrammerNotFound

  • SysUtils biriminin Win32 dalında bildirilir, ancak RTL veya VCL'de herhangi bir yerde kullanılmaz
  • Delphi Prism'de mevcut değil
  • Delphi 2009'da tanıtıldı, bu nedenle VCL.NET'te mevcut değil
  • şu anda (sürüm 3.5) .NET çerçevesinde benzer hiçbir şeye sahip değil (neden emin değilim, bu adamların mizahları var )

EProgrammerNotFound'un aslında kullanılmasının amaçlandığını sanmıyorum, ama orada olduğu için insanlar onu şakayla kullanacaklar (başka birinin kaynak koduna başıboş bir "const False = True; True = not False" koymak gibi).

--jeroen


2
Hmm, programcı sadece bir kişi değil, aynı zamanda bir cihazdır (örneğin, gömülü cihazların flaşını programlamak için). Burada bir IPhone kokusu alıyorum? Naah, o zaman sysutils değil, IDE kaynağında olacaktır.
Marco van de Voort

8
EBCAK? Her zaman PEBKAC olarak ifade edildiğini duydum. (Klavye ve Sandalye Arasında Sorun Var).
Mason Wheeler


5

Derleyicinin "Sözdizimi hatası: Programcı bekleniyor" un çalışma zamanı analoğudur. ;>


2
Jive!
dthorpe

4

Bu bir tür kendini anlatan şaka, bu kodu deneyebilirsin

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

veya

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

Yukarıdaki, Delphi 10 Seattle'da çalışıyor.


3

Programcı söz konusu olduğunda, başvurulan Delphi'nin arkasında oturan programcı değildir. Sanırım D2009 ve üzerinde her nesnenin beklenebilir olduğunu planladıkları (hiç kullanmadıkları için kullanmadıkları için çalışıp çalışmadığını) için kullanıldığını düşünüyorum.


Aslında kullanılabilir. Herhangi bir nesneyi TMonitor.Enterve 'ye iletebilirsiniz TMonitor.Exit. Ve bir paskalya yumurtası olup olmadığından emin değilim ...
jpfollenius

1
Beklenebilir bir nesnenin programcılarla ne alakası var veya bulunup bulunmadıkları? Ya programcı olduğunu Başvurulan?
Rob Kennedy

0

Ben bir programcıyım, ben bir istisna mıyım?

Marco Cantù, bunu "Delphi 2009 el kitabı" - sayfa 242'de de anlatıyor. VCL kaynak kodunda asla şaka yapmadığını söylüyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.