Pengecualian EProgrammerNotFound dalam Delphi?


132

Dalam Delphi 2009, SysUtils.pas berisi ini di baris 425:

EProgrammerNotFound = class(Exception);
  • Apakah ini sekadar telur paskah atau sesuatu yang serius?
  • Kapan pengecualian ini harus diajukan?
  • Apakah itu juga ada di Prphi Delphi dan / atau Free Pascal?

T: Apakah kelas pengecualian ini masih dideklarasikan dalam Delphi (saat ini XE7)? A: Ya, dan bahkan didokumentasikan !

Cara tidak standar untuk menunjukkan kesalahan perangkat lunak.

Anda dapat menggunakan EProgrammerNotFound sebagai alternatif untuk menunjukkan kesalahan perangkat lunak yang terdeteksi pada saat dijalankan.


4
Pengecualian ini baru-baru ini disebutkan dalam jawaban tentang AndroidManager . fungsi isUserAGoat ()
mjn


Saya pikir pola desain ini pantas mendapatkan nama formal. Saya melihatnya di sini juga: YourCodeSucksException
Gungwald

Jawaban:


152

Itu hanya hasil dari hari yang panjang dan kami agak pusing. Selama bertahun-tahun (sejak saya berada di tim), kami selalu bercanda tentang mengganti beberapa pesan kesalahan dalam kompiler untuk salah satu kesalahan paling umum dengan pesan yang sama. Secara internal kami selalu bercanda dan mengolok-olok hal dan orang yang berbeda (kebanyakan di tim itu sendiri). Jika Anda tidak memiliki selera humor, Anda ditakdirkan untuk mati lebih awal.

Itu adalah percakapan sederhana;

"Oh, kamu seharusnya telah mengangkat pengecualian EProgrammerNotFound dalam fungsi itu."
"LOL! Kita harus menambahkan pengecualian itu dan melihat siapa yang tahu."
"Aku ingin tahu berapa banyak spekulasi tentang mengapa itu ada di sana?"

Jadi, saya kira yang bisa saya katakan adalah, "Anda semua bermain tepat di tangan kami; -) ... Buwahahaha! Pwned!"


9
Bukankah ini pengecualian paling umum di Tron?
LaKraven

1
Sangat masuk akal untuk memiliki pengecualian seperti itu. Saya selalu menganggap pengecualian ini sebagai ENotImplementedException
stanleyxu2005

6
@ stanleyxu2005, untuk itu Anda bisa menggunakan ENotImplementedpengecualian.
TLama

Saya punya kebiasaan EProgrammerException. Saya mengetik kode untuk menyelesaikan EProgr...ketika wawasan kode menunjukkan saya EProgrammerNotFound. Sayangnya saya tidak bisa menggunakan EProgrammerNotFound, karena saya EProgrammerExceptionberasal dari EInvisibleException; seperti yang dimaksud sebagai persilangan antara kegagalan pernyataan dan EAbortpengecualian (saya menangkap seorang programmer mengacaukan sesuatu, dan saya akan berhenti di sini).
Ian Boyd

24

Ini digunakan bersamaan dengan teknologi "fix-inline" yang mengharuskan programmer harus terhubung ke file exe ;-)


20

Ini diperkenalkan di Delphi 2009, masih ada di Delphi 2010, dan baru - baru ini mendapat perhatian lebih di internet .

Saya pikir itu adalah telur paskah, mirip dengan " EBCAK " (Kesalahan Antara Kursi dan Keyboard), dan melewatkan versi Delphi nomor 13 .

EProgrammerNotFound

  • dideklarasikan di cabang Win32 dari unit SysUtils, tetapi tidak digunakan di RTL atau VCL
  • tidak hadir di Delphi Prism
  • diperkenalkan di Delphi 2009, jadi tidak ada di VCL.NET
  • Saat ini (versi 3.5) tidak ada yang serupa dalam kerangka NET. (Tidak yakin mengapa, orang-orang ini memiliki humor )

Saya tidak berpikir EProgrammerNotFound sebenarnya dimaksudkan untuk digunakan sama sekali, tetapi karena itu ada, orang akan bercanda menggunakannya (mirip seperti menyimpang "const False = True; True = not False;" pada seseorang menggunakan kode sumber).

--Jeroen


2
Hmm, programmer tidak hanya orang, tetapi juga perangkat (untuk pemrograman misalnya flash perangkat yang disematkan). Apakah saya mencium bau iPhone di sini? Naah, maka itu akan berada di sumber IDE, bukan sysutils.
Marco van de Voort

8
EBCAK? Saya selalu mendengarnya dinyatakan sebagai PEBKAC. (Masalah Ada Di Antara Keyboard Dan Kursi).
Mason Wheeler


5

Ini adalah analog runtime dari "Sintaks kesalahan: kompiler yang diharapkan dari program". ;>


2
Anda seharusnya melihat build dengan string compiler yang dilokalisasi ke Jive!
dthorpe

4

Ini adalah semacam lelucon yang menggambarkan diri sendiri, Anda dapat mencoba kode ini

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

atau

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

Di atas berfungsi di Delphi 10 Seattle.


3

Dengan programmer, bukan programmer yang duduk di belakang Delphi yang dirujuk. Saya pikir ini digunakan untuk fakta bahwa pada D2009 dan di atas mereka merencanakan (tidak pernah menggunakannya tidak tahu apakah itu berfungsi) bahwa setiap objek ditunggu.


Sebenarnya, itu bisa digunakan. Anda dapat meneruskan objek apa pun ke TMonitor.Enterdan TMonitor.Exit. Dan saya tidak yakin apakah ini telur paskah atau tidak ...
jpfollenius

1
Apa hubungan objek yang harus ditunggu dengan programmer atau apakah mereka ditemukan? Dan apa programmer yang direferensikan?
Rob Kennedy

0

Saya seorang programmer, apakah saya pengecualian?

Marco Cantù juga menjelaskan hal ini dalam bukunya 'Delphi 2009 handbook' - halaman 242. Dia mengatakan itu tidak pernah dicampurkan dalam kode sumber VCL.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.