최단 오류 메시지


135

도전

컴파일되거나 실행될 때 프로그램 자체보다 작은 치명적인 오류 메시지를 생성하는 가장 짧은 프로그램을 작성하십시오. Python과 같은 프로그램 자체에서 오류 메시지가 생성되지 않을 수 있습니다 raise. 유효한 답변은 코드와 오류 메시지를 모두 포함해야합니다. 가장 짧은 유효한 답변이 이깁니다.

오류 메시지 없음은 오류 메시지로 간주되지 않습니다.

예 (루아)

코드 (46 바이트) :

[
--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

오류 (45 바이트) :

[string "[..."]:1: unexpected symbol near '['

의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 .
Dennis

1
@Dennis "OP는 설명을 명확하게 편집하지 않습니다"문제를 해결하는 한 가지 방법이라고 생각합니다.
Ørjan Johansen

1
가장 많은 표를 얻은 제 답변을 수락 해 주셔서 감사합니다. 그러나 이것은 code-golf 태그로 지정 되었으므로 가장 짧은 이 답변을 수락해야합니다 .
MD XF

@smartpeople는 다음과 같습니다 : " __main__.CodeException: Raised an &rror."내 오류 Raised an &rror.
입니까

중국에서 실행되는 TrumpScript?
Stan Strum

답변:


58

ed , 3 바이트

참고 : 여기에있는 대부분의 대답은 오류 메시지의 일부로 인쇄 된 후행 줄 바꿈을 무시합니다. 그러나 나는 그것을 무시하는 것을 정당화하기 위해 질문에 아무것도 보지 못했고 저자 는 줄 바꿈이 포함되어야한다고 언급했다 . 따라서 질문이 변경되지 않는 한 포함시킬 것입니다.

코드 (줄 바꿈 포함) :

??

오류 (줄 바꿈 개행) :

?


19
실제로, 이것은 이길 수 없습니다. : P
완전히 인간적인

1
ed는 추가 및 우선 순위 테스트를 수행 할 수 있습니까? 아니면 이런 유형의 도전에는 필요하지 않습니까?
Stephen

4
@StepHen 예, 일반적인 정규 표현식을 사용한 역 참조 트릭을 통해 단항으로 덧셈 및 우선 순위 테스트를 수행 할 수 있습니다.
Anders Kaseorg

1
매우 영리하지만 '?' 치명적이지 않습니다.
Mark Plotnick

2
플래그에서 지적했듯이 터미널에서 코드를 읽지 않으면 오류가 치명적입니다. 온라인으로 사용해보십시오!
Dennis

59

C (현대 리눅스), 19 바이트

내 유명한 segfault를했지만 완전히 인간이 그것을 훔 쳤을 것입니다.

main(){longjmp(0);}

출력 (18 바이트) :

Segmentation fault

당신은 현재 나보다 더 높은 점수를 가지고 있습니다 ... Win-win?
완전히 인간적인


더 짧은 버전의 다른 로케일이 main(){main();}없습니까 (그래서 사용할 수 있도록 )?
12431234123412341234123

@ 12431234123412341234123 잘 모르겠습니다. 또한 main(){main();}세그먼트 오류가 보장되지는 않습니다.
MD XF

1
@MDXF 보증이 없습니다 (gcc 또는 clang에서 최적화를 사용하면 무한 루프로 끝나거나 호출을 무시합니다). 그러나 Code Golf에서는 보증이 아닌 실제 구현이 필요합니다.
12431234123412341234123

48

파이썬 2, 35 바이트

import sys;sys.tracebacklimit=000;a

오류가 발생합니다 :

NameError: name 'a' is not defined

14
역 추적 한계 수정 ... 좋은 것
HyperNeutrino

1
이것은 영리하다!
Skyler

34

자바 스크립트 (Firefox), 31 바이트

# This is a comment, right? ...

이 오류가 발생합니다.

SyntaxError: illegal character

Windows 7의 Firefox 54.0.1 콘솔에서 테스트되었습니다.


26

파이썬 2 , 87 79 바이트

Zacharý와 Outgolfer Erik에게 감사합니다.

from __future__ import braces
#i am most surely seriously actually totallyhuman

온라인으로 사용해보십시오!

오류 메시지 78 바이트 :

코드가라는 파일에 저장되어 있다고 가정합니다 a.

  File "a", line 1
    from __future__ import braces
SyntaxError: not a chance

이것은 실제로 파이썬에서 좋은 작은 부활절 달걀입니다. :디


1
한 문자 파일 이름을 가정 할 수 있습니다!
Zacharý

1
1 문자 파일 이름을 가정하면 이것으로 골프를 칠 수 있습니다 .
Outgolfer Erik

잘 했어 - - -
totallyhuman

1
그러나 오류 메시지는 프로그램 자체보다 작아야합니다.
Leaky Nun

1
IDLE을 사용하면 \s\sFile "<stdin>", line 1\nSyntaxError: not a chance50 바이트 ( \s공백이며 \n개행) 만 얻을 수 있으므로 51 바이트 프로그램을 얻을 수 있습니다.
boboquack

20

하스켈, 13 바이트

main = (main)

t.hs또는 다른 한 문자 이름 으로 저장하고로 컴파일 한 ghc후 실행하십시오. 오류 메시지 (줄 바꿈 포함) :

t: <<loop>>

19

택시 , 38 21 바이트

Switch to plan "abc".

생산 :

error: no such label

온라인으로 사용해보십시오!

엔지니어 토스트 덕분에 -17 바이트

존재하지 않는 "abc"로 전환하려고합니다. 당신은 [abc]어딘가에있을 것입니다.


4
Switch to plan "abc".생성 하면 21 바이트까지 줄일 수 있습니다 error: no such label. 이것은 택시가 전통적인 언어를 능가 하는 몇 가지 코드 골프 과제 중 하나 일 수 있습니다 .
엔지니어 토스트

@EngineerToast 감사합니다, 그 생각하지 않았다.
Stephen

18

> <> , 26 바이트

>>>>>>>>>>>>>>>>>>>>>>>>>:

온라인으로 사용해보십시오!

Fish의 모든 오류 메시지는 something smells fishy...이므로 포인터는 포인터를 그보다 길게 오른쪽으로 이동하고 스택의 맨 위를 복제하려고 시도합니다.


2
나는 그것을 좋아하고 그것은 확실히 모든 솔루션 중에서 가장 비린내가 :-)
Xan-Kun Clark-Davis

@ Xan-KunClark-Davis는 한숨쉬었다 ... : P
HyperNeutrino

18

자바 스크립트 (Firefox), 21 바이트

(a=null)=>a.charAt(1)

오류 (20 바이트) :TypeError: a is null


2
도! 더 짧은 것이 있다는 것을 알았습니다 ...
ETHproductions

나는 같은 생각을 가지고 a = null; a.x01234567890 같은 양의 바이트
RuteNL

16

System V 쉘, 25 바이트

mount /dev/hda1 /mnt/hda1

오류 메시지 (23 바이트) :

mount: not a typewriter

"타자기가 아님"또는 Unix 시스템에 ENOTTY정의 된 오류 코드 errno.h입니다. 이는 ioctl 시스템 호출에 유효하지 않은 ioctl (입력 / 출력 제어) 번호가 지정되었음을 표시하는 데 사용됩니다. 내 시스템에서에서 /usr/include/asm-generic/errno-base.h다음 줄을 찾을 수 있습니다.

#define ENOTTY          25      /* Not a typewriter */

버전 6 UNIX 및 이전 버전에서 I / O는 텔레타이프 (TTY)와 같은 직렬 연결된 터미널 장치로 제한되었습니다. 이들은 일반적으로 gttystty시스템 호출을 통해 관리되었습니다 . 비 터미널 장치에서 이러한 시스템 호출 중 하나를 사용하려고하면 ENOTTY생성 된 것입니다.

요즘에는 텔레타이프를 사용할 필요가 없습니다. 때 gttystty교환되었다 ioctl, ENOTTY유지되었다. 일부 시스템은 여전히이 메시지를 표시합니다. 그러나 대부분 "장치에 부적절한 ioctl"이라고 말합니다.


설명하십시오 ...
Mega Man

@MegaMan 설명으로 업데이트되었습니다.
MD XF

1
실제로 깨달은 설명을위한 찬성.
Xan-Kun Clark-Davis 1

11

Q 기본, 11 바이트

QBasic에는 11 바이트의 두 가지 솔루션이 있으며 그 중 하나는 더 골프를 치는 것일 수 있습니다. QBasic에있는 가장 짧은 오류 메시지는입니다 overflow. 다음과 같이 트리거 될 수 있습니다.

i%=i%+32677

overflow정수 ( i%) 의 최대 값 이 이므로 발생합니다 32676. 나는이되지 수 32677QBASIC 긴이 자동 캐스팅없이 golfed ...

11 바이트의 다른 오류는입니다 out of data. QBasic에는 DATA프로그램에 데이터를 저장하는 명령문이 있으며,이 명령문은 나중에 READ명령문 으로 액세스 할 수 있습니다 . READs보다 많은 s를 발행 DATA하면 오류가 발생합니다.

READ a$ '--

명령문은 오류 메시지 길이까지 주석으로 채워집니다. 예, 프로그램이 짧은 오류 메시지와 오류 메시지가 짧은 프로그램이 있습니다 ...


11

C (현대 리눅스), 19 바이트

나는 이것을 채팅으로 제안했지만 아무도 호감을 얻지 못했습니다. : P MD XF의 재미있는 답변 입니다.

main(){puts('s');;}

오류 메시지, 18 바이트

Segmentation fault

1
그러나 오류 메시지는 프로그램 자체보다 작아야합니다.
Leaky Nun

바이트 수가 잘못되었습니다.
완전히 인간적인

9
서브 프로세스가 종료 코드 139로 종료 될 때 쉘이 인쇄하는 일반 메시지입니다. C 프로그램 자체는 오류 메시지를 전혀 생성하지 않습니다.
Dennis

7
@Dennis Exit 코드 139는 실제로 쉘에 의해 만들어진 또 다른 거짓말입니다. 유닉스는 신호 11 ( W_EXITCODE(0, 11) == 11)과 종료 코드 139 ( W_EXITCODE(139, 9) == 139 << 8)를 구별 합니다. 셸 $?은 의심 할 여지없이로 설정 WIFEXITED(wstatus) ? WEXITSTATUS(wstatus) : WTERMSIG(wstatus) + 128되지만 대부분의 언어에서 차이가 나타납니다.
Anders Kaseorg

2
@Anders인가 WIFEXITED(wstatus)에 해당 DIVORCE(alimony)혹시?
야누스 바 자크



10

PowerShell , 215 189 바이트

[]
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

온라인으로 사용해보십시오!

따라서 PowerShell에는 ... verbose ... 오류 메시지가 있습니다. 또한 대부분의 구문이 아닌 오류 메시지는 런타임 예외입니다. 즉, 치명적이지 않으므로 짧은 구문 분석 오류를 찾는 데 필요한이 문제가 줄어 듭니다.

나는 생각 이되지 않을 경우, 최단 중 하나입니다 짧은, @TessellatingHeckler이 가장 짧은 구문 분석 오류가 증명하고 있으며, 아직도의 무게 188바로 오류 메시지 바이트. 따라서 기본적으로 "코드"바이트에 1도달하기에 충분한 s 를 추가해야합니다 189.

c:\a.ps1예를 들어 로컬에서 이것을 실행하면 파일 경로가 짧아 TIO에서 사용할 수 없으므로 바이트 수를 소수로 줄입니다.

오류를 생성합니다 :

At /tmp/home/.code.tio.ps1:1 char:2
+ []
+  ~
Missing type name after '['.
    + CategoryInfo          : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : MissingTypename

나는 의견에 세 가지 질문을 받았는데, 그중 하나는 당신이 묻는 것이지만, 두 가지 모두 묻지 않은 것은 당신의 대답이 아니라 당신의 대답에 적용되었습니다.
user72528

@ user72528 그래, 나도 재미있는 것을 발견했다.
AdmBorkBork

하나의 char 파일 이름을 사용할 수 있습니다!
Zacharý

1
@ Zacharý 할 수는 있지만 TIO가 샌드 박싱을 처리하는 방식으로 인해 TIO에서 재현 할 수 없습니다. 몇 바이트를 절약하는 것보다 TIO에서 사용할 수 있도록 유지하는 것을 선호합니다.
AdmBorkBork

2
어떤 []것이 더 짧은 오류처럼 보이고 Missing type name after '['정확히 계산 방법에 따라 190-tio.run/##K8gvTy0qzkjNyfn/PzqWy3Dogv//AQ ( 여기서 가장 짧은 파서 오류처럼 보이는 파서 문자열 에서 가져온 것)는 어떻습니까([xml](gc .\ParserStrings.resx)).root.data.value | sort { $_.length } -Desc ?
TessellatingHeckler

9

코모도어 64 베이직, 15 바이트

?SYNTAX   ERROR

생산

?SYNTAX  ERROR

(프로그램에 3 개가있는 오류 메시지에 2 개의 공백이 있음)

?SYNTAX ERROR묶여있다 ?VERIFY ERRORC64 기본 생산할 수있는 세 번째 최단 에러 메시지 안정적 코드 (짧은 메시지에 의해 트리거 될 수있는 최단 같은 BREAK IN 1반면, 사용자 상호 작용을 필요로 ?LOAD ERROR결함 테이프 또는 플로피 디스크를 필요로하고, ?VERIFY ERROR존재를 필요 RAM의 프로그램과 일치하지 않는 파일이 들어있는 플로피 또는 테이프).


1
하, 내가 글을 올렸을 때조차 이것을 보지 못했습니다 . 항상 다른 기본 사용자를 만나서
MD XF

8

R , 29 28 바이트

JarkoDubbeldam 덕분에 -1 바이트

a #abcdefghijklmnopqrstuvwxy

Error: object 'a' not found27 바이트 인 오류 를 발생시킵니다 .

온라인으로 사용해보십시오!


2
a #abcdefghijklmnopqrstuvwxy의 오류 Error: object 'a' not found는 1 바이트 짧습니다.
JAD

@JarkoDubbeldam 감사합니다.
주세페

7

루비 ( 33 32 바이트)

32 바이트

&
#abcdefghijklmnopqrstuvwxyz12

"a"라는 파일을 가정하면 오류가 발생합니다.

31 바이트

a:1: syntax error, unexpected &

편집 : 더 짧은 Ruby 솔루션 을 만든 Eric 덕분에 &대신 대신 사용하여 바이트를 줄 였습니다 .http : //codegolf.stackexchange.com/a/135087/65905<<


1
PPCG에 오신 것을 환영합니다!
마틴 엔더

트윗 담아 가기 오류 메시지에 모든 단일 문자 연산자가 인용되어 있다고 생각했지만 옳습니다 &. 산뜻한! 또한 16 진수 탈출로도 좋습니다. 구문 오류 이외의 더 짧고 스택이없는 치명적인 오류 메시지를 찾기 위해 고심하고있었습니다.
ameketa

@ameketa : 실제로 bruteforce 프로그램을 작성하고 가능한 모든 1, 2 및 3 바이트 Ruby 프로그램을 테스트했습니다 .D 링크 주셔서 감사합니다.
Eric Duminil

5

Brainf ** k, 17 바이트, 이 인터프리터

+++++++++++++++<<

Brainf ** k는 거의 모든 통역사가 다른 오류 메시지를 갖는 간단한 언어입니다. Memory Error: -1포인터가 너무 왼쪽으로 이동하고 다른 작업을 시도 할 때 사용 합니다.


통역사를 선택하는 것은 언어를 선택하는 것만 큼 어려운 과제라고 생각합니다.
user72528

@ user72528 자, 여기서 우리는 통역사에 의해 언어를 정의하므로,이 과제는 오류 메시지가 가장 짧은 통역사를 선택하는 것에 관한 것입니다. :)
HyperNeutrino

1
누가 뇌를 때리는가? 아무도 없어요? 좋구나.
Outgolfer Erik

탁월한 솔루션은 1 바이트의 오류를 발생시키는 2 바이트 솔루션입니다.
Zacharý

@ Zacharý 확실히 lol
HyperNeutrino


5

TryAPL, 11 바이트

코드 (11) :

'abcdefghij

오류 (10) :

open quote

5

자바 스크립트 (Firefox), 29 27 바이트

new Date('-').toISOString()

RangeError: invalid date어느 24 바이트를 던집니다 . Windows 10의 Firefox 54.0.1에서 테스트되었습니다.


5

ZX 스펙트럼 기본, 9 바이트

RUN USR 8

생산 :

에러 메시지

설명:

줄 끝을 포함하여 길이 목적으로 프로그램의 ASCII 표현을 (예외적으로) 세는 것입니다 (공백으로 더 짧은 프로그램을 항상 채울 수 있기 때문에 실제로 중요하지는 않습니다).

일반적으로 ZX Spectrum 오류 메시지는 이것보다 길고 더 유용합니다. 0x0008의 ROM 루틴은 기계 코드 호출에 따른 오류 코드를 기대합니다 RST 8. ROM에서 임의의 (결정적) 바이트를 가져 와서이 의미가없는 오류 메시지를 생성합니다 M. 5오류 번호 ,는 오류 인쇄 루틴에 의해 추가되며 오류 0:1의 line : command 위치입니다.


실제로 ZX 스펙트럼은 런타임에 숫자를 평가하지 않기 때문에 실제로는 9 바이트입니다. 실제로 실제로 6 바이트를 숨길 수 있으므로 8의 이진 표현에 직접 액세스 할 수 있습니다.
Neil


4

펄 5 , 5 바이트

die$/

1 바이트의 개행을 출력합니다.

온라인으로 사용해보십시오!


._. 이제 ... 빈 파일에 펄 오류 만 있다면!
Zacharý

4
잠깐, 이것이 "프로그램 자체에 의해 생성되지 않을 수 있습니다"에 대한 위반입니까? 나는 그 규칙이 무엇을 말하는지 이해하지 못했습니다.
aschepler

1
@ Zacharý ... 총 길이가 음수 인 오류 메시지가 표시됩니까?
aschepler

1
이것은 유효하지 않을 수도 있습니다. OP가 오류를 의미했는지 또는 오류 메시지를
Zacharý

^ 설명 : 프로그램이 직접 오류인지 또는 직접 오류 메시지를 작성하는지
Zacharý

4

펄 5 , 11 바이트

다른 답변 이 챌린지 규칙을 따르는 지 확실하지 않기 때문에 다른 대안이 있습니다.

#line 0
die

오류 출력 :

Died.

6 바이트의 끝 줄 바꿈.

온라인으로 사용해보십시오!

어떤 이유로 Perl 인터프리터 내부 함수 Perl_mess_sv에는 다음이 포함됩니다.

if (CopLINE(cop))
    Perl_sv_catpvf(aTHX_ sv, " at %s line %" IVdf,
                    OutCopFILE(cop), (IV)CopLINE(cop));

여기서 CopLINE(cop)현재 코드 컨텍스트의 행 번호를 가져옵니다. 따라서 해당 행 번호가 0으로 평가되면 Perl은 " at <filename> line <n>"오류 메시지에 평소 추가를 건너 뜁니다 .


1
나에게는 유효하지 않은 것 같습니다. IIRC die는 프로그램을 종료하기위한 것입니다.
sergiol

1
파이썬과 다른 점은 raise무엇입니까?
Eric Duminil

OP는 오류 또는 오류 메시지 생성을 참조했을 수 있습니다 . 나는 그가 의미하는 바에 대해 언급했다.
Zacharý

4

ArnoldC , 150 바이트

IT'S SHOWTIME
HEY CHRISTMAS TREE b
YOU SET US UP 0
GET TO THE CHOPPER b
HERE IS MY INVITATION b
HE HAD TO SPLIT 0
ENOUGH TALK
YOU HAVE BEEN TERMINATED

온라인으로 사용해보십시오!

오류는 94 바이트입니다 (후행 줄 바꿈 포함).

Exception in thread "main" java.lang.ArithmeticException: / by zero
    at code.main(Hello.java)

나는 이것이 더 재미 있다고 생각하기 때문에 보존되었습니다-스포일러 : 그것은 십대 십대 장난 꾸러기였습니다.

ArnoldC , 280 바이트

IT'S SHOWTIME
HEY CHRISTMAS TREE BRBDoorBetterNotBeThosePeskyTeenagePranksters
YOU SET US UP 0
GET YOUR ASS TO MARS BRBDoorBetterNotBeThosePeskyTeenagePranksters
DO IT NOW
I WANT TO ASK YOU A BUNCH OF QUESTIONS AND I WANT TO HAVE THEM ANSWERED IMMEDIATELY
YOU HAVE BEEN TERMINATED

의사 코드 :

start program
new variable
set to 0
set new variable to output from function
call function
take input
end program

온라인으로 사용해보십시오!

"입력 없음"오류를 생성합니다. ArnoldC의 거의 모든 다른 오류에는 큰 상용구가 포함됩니다.

279 바이트 (후행 줄 바꿈 포함) :

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at code.main(Hello.java)

4

TI 기본, 9 바이트

: 최단 오류 메시지는 8 바이트 각각 ERR:DATE, ERR:MODE, ERR:STAT,와 ERR:ZOOM. ERR:DATE내부 시계가없는 모델에서는 작동하지 않기 때문에 고려 하지 않았습니다. 또한 ERR:ZOOM트리거하기가 너무 어려워서 가지 않았습니다 .

프로그램 (9 바이트) :

Seq:DrawInv X:::::

오류 메시지 : ERR:MODE(8 바이트)

프로그램 (9 바이트) :

median({1},{0::

오류 메시지 : ERR:STAT(8 바이트)


3

루비, 25 바이트

그것은 재미있는 운동이었습니다, 감사합니다! 아마도 SegFault와 함께 더 짧은 오류 메시지를 얻는 방법이 있지만 찾을 수 없었습니다.

/\x
# Invalid hexa regexp

에러 메시지:

a:1: invalid hex escape

후행 줄 바꿈을 포함하여 24 바이트

온라인으로 사용해보십시오!

루비, 26 바이트

이전 답변은 다음과 같습니다.

08
# No 8 allowed in octal

에러 메시지:

a:1: Invalid octal digit

후행 줄 바꿈을 포함하여 25 바이트


나는 당신이 당신의 대답을 분리해야한다고 생각합니다.
Solomon Ucko

@SolomonUcko : 왜 그렇습니까? 이미 많은 답변이 있습니다. 방금 이전 답변을 남기고 싶었습니다. 사람들은 보통 <s> 26 </ s> 25로 바이트 수를 편집하지만 사소한 변경이 필요한 경우가 많습니다.
Eric Duminil

사실, 내가 왜 그렇게 말했는지 잘 모르겠습니다.
Solomon Ucko

3

C ++ (macOS High Sierra 베타), 23 자

int main(){*(int*)0=0;}

출력 : (22 자)

Segmentation fault: 11

이전 버전의 macOS가 더 전통적인 Segmentation fault (core dumped)응답을 제공하는지 여부는 기억 나지 않지만 코드에 공백을 추가하여 제거하는 것은 매우 사소한 일입니다.

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