델파이에서 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

그것은 단지 긴 하루의 결과이며 우리는 약간 어리 석었습니다. 수년 동안 (팀에 근무한 이후로), 가장 일반적인 오류 중 하나에 대해 비슷한 메시지를 가진 컴파일러의 일부 오류 메시지를 대체하는 것에 대해 항상 농담이었습니다. 내부적으로 우리는 항상 다른 것들과 사람들 (주로 팀 자체)에서 농담을하고 재미를 찌르고있었습니다. 유머 감각이 없다면 초기 무덤으로 향하게됩니다.

간단한 대화였습니다.

"아, 그 함수에서 EProgrammerNotFound 예외를 발생시켜야합니다."
"LOL! 우리는 그 예외를 추가하고 누가 통지하는지보아야합니다."
"왜 존재하는지에 대한 추측이 얼마나 될까?"

그래서, 내가 말할 수있는 것은 "당신은 모두 우리 손에 뛰었습니다;-) ... Buwahahaha! pwned!"


9
이것이 Tron에서 가장 일반적인 예외가 아닙니까?
LaKraven

1
그러한 예외를 갖는 것이 상당히 합리적입니다. 나는 항상이 예외를 ENotImplementedException으로 간주합니다
stanleyxu2005

6
@ stanleyxu2005, ENotImplemented예외를 사용할 수 있습니다 .
TLama

나는 관습이있다 EProgrammerException. EProgr...코드 통찰력이 표시 되면 완료 할 코드 를 입력하고있었습니다 EProgrammerNotFound. 슬프게도 나는 EProgrammerNotFoundEProgrammerException후손 으로 사용할 수 없습니다 EInvisibleException. 어설 션 실패와 EAbort예외 사이의 교차로 의미했기 때문에 (프로그래머가 무언가를 망쳐 놓았 으므로 여기서 멈출 것입니다).
Ian Boyd

24

프로그래머가 exe 파일에 링크되어야하는 "fix-inline"기술과 함께 사용됩니다 ;-)


20

델파이 2009에서 소개되었고 여전히 델파이 2010에 있으며 최근 인터넷 에서 더 많은 관심을 받았습니다 .

나는 " EBCAK "(의자 및 키보드 사이의 오류) 와 비슷한 이스터 에그라고 생각하며 Delphi 버전 번호 13을 건너 뜁니다 .

EProgrammerNotFound

  • SysUtils 장치의 Win32 분기에 선언되었지만 RTL 또는 VCL의 어느 곳에서도 사용되지 않습니다
  • 델파이 프리즘에 없습니다
  • Delphi 2009에 도입되었으므로 VCL.NET에는 없습니다.
  • 현재 (버전 3.5)는 .NET 프레임 워크와 유사하지 않습니다 (이 사람들 은 유머가 있는지 확실하지 않습니다 )

나는 EProgrammerNotFound가 실제로 전혀 사용되지 않는다고 생각하지만, 그것이 있기 때문에 사람들은 농담으로 그것을 사용할 것입니다 (다른 소스 코드에서 "const False = True; True = not False;

-제로 엔


2
흠, 프로그래머는 사람뿐만 아니라 장치 (예 : 내장 장치의 플래시)를위한 장치이기도합니다. 나는 여기에서 아이폰 냄새가 나는가? Naah는 sysutils가 아닌 IDE 소스에 있습니다.
Marco van de Voort

8
EBCAK? 나는 항상 그것이 PEBKAC로 표현되었다고 들었습니다. (키보드와 의자 사이에 문제가 있음).
메이슨 휠러

11

기원은 논쟁의 여지가 있지만, 한동안 알려져 있습니다 ...
Marco Cantu는 "Fun Side of Delphi"세션에서 농담을했습니다.
IMO, 더 자주 사용해야합니다 ;-)

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

추신 : 나는 그것이 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
기다릴 수있는 객체는 프로그래머와 어떤 관련이 있는지 또는 찾은지와 관련이 있습니까? 그리고 어떤 프로그래머 참조되고 있습니까?
Rob Kennedy

0

나는 프로그래머입니다.

Marco Cantù는 또한 그의 저서 인 'Delphi 2009 handbook'-242 페이지에서이 내용을 설명합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.