종료 메시지를 만드는 방법


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.