종료 메시지를 만드는 방법


208

프로그램을 종료하고 메시지를 표시하는 한 줄 함수 호출이 있습니까? 나는 Perl에서 다음과 같이 간단하다는 것을 알고있다.

die("Message goes here")

나는 이것을 입력하는 데 지쳤다.

puts "Message goes here"
exit

10
작은 의견 puts은 stdout에 die쓰는 반면 stderr에는 씁니다 $stderr.puts "Message goes here".
cdarke

나는 이것이 답이 아니라는 것을 알고 있지만, 그것은 내 질문에 답했습니다.
Patrick

참고로 파이썬에서는입니다 sys.exit("Message goes to stderr").
anatoly techtonik

답변:


361

abort기능은이 작업을 수행합니다. 예를 들면 다음과 같습니다.

abort("Message goes here")

참고 : abort메시지가 기록됩니다 STDERR반대로 puts에있는 기록합니다 STDOUT.


6
와! 좋은 발견! 이 기능으로 출구에 과부하가 걸리지 않은 것은 너무 나쁘다 ....
Mike Stone

56
중단은 실패를 나타내는 false 상태로 프로그램을 종료합니다. 기본적으로 종료는 성공을 나타내는 true 상태로 종료됩니다. 상황에 맞는 것을 사용하십시오.
Alex Spurling

1
레. Mike Stone의 의견에 따르면, 루비는 서로 의사 소통을하지 않은 사람들이 작성한 것처럼 보이지만 그렇지 않습니까? (아직 프로그램을 작성하는 것은 매우 쉽습니다.)
JellicleCat

24

코드에서 실제 오류를 나타내려면 RuntimeError예외를 발생 시킬 수 있습니다 .

raise RuntimeError, 'Message goes here'

그러면 스택 추적, 발생한 예외 유형 및 제공 한 메시지가 인쇄됩니다. 사용자에 따라 스택 추적이 너무 무서워서 실제 메시지가 노이즈에서 손실 될 수 있습니다. 반면에 실제 오류로 인해 사망하면 스택 추적에서 디버깅에 대한 추가 정보를 제공합니다.


24
다음 코드는 충분합니다 있도록이 인상 하나에 RuntimeError에 언급 할 필요가 없습니다 (이 예외의 기본 종류가 제기의) : 인상 '메시지가 간다'
sunaku

sunaku-귀하의 의견이 완벽하게 유효하지만, 특히 코드를 나중에 읽는 다른 사람들에게 더 명백한 것이 유용 할 수 있음을 종종 발견했습니다.
shevy

2

그런 기능에 대해 들어 본 적이 없지만 구현하기에는 충분하지 않습니다 ...

def die(msg)
  puts msg
  exit
end

그런 다음 이것이 모든 스크립트에 포함 된 일부 .rb 파일에 정의되어 있다면 황금색입니다 .... 내장되어 있지 않다고해서 직접 할 수 없다는 것은 아닙니다. ;-)


3
판명 '중단'기능 수행이 (내 대답은 아래 참조)
크리스 무리

1
중단 기능이 코드를 작성할 때 왜 코드를 작성합니까?
게리 하란

2
@ChrisBunch 이것은 중단 기능과 동일 하지 않습니다 . exit기본값은 마치 성공한 것처럼 반환하는 것입니다. abort실패를 반환합니다. exit 1실패도 반환합니다.
TemporalWolf

2

프로그램이 끝날 때마다 코드를 실행하는 방법을 찾고 있습니다.
이것을 발견 :

Kernel.at_exit { puts "sayonara" }
# do whatever
# [...]
# call #exit or #abort or just let the program end
# calling #exit! will skip the call

여러 번 호출하면 여러 핸들러가 등록됩니다.

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