終了メッセージを作成する方法


208

プログラムを終了してメッセージを表示する1行の関数呼び出しはありますか?Perlでは、次のように簡単です。

die("Message goes here")

私はこれを入力するのに疲れました:

puts "Message goes here"
exit

10
小さなコメントです。あなたputsはstdoutにdie書き込みますが、stderrに書き込みます$stderr.puts "Message goes here"
cdarke

これが答えではなかったのはわかっていますが、私の質問には答えました。ありがとう
Patrick

参考までに、Pythonではですsys.exit("Message goes to stderr")
anatly techtonik 2014

回答:


361

abortこの関数はこれを行います。例えば:

abort("Message goes here")

注:abortメッセージはに書き込まれるのでSTDERRはなく、putsに書き込まれSTDOUTます。


6
うわー!いい発見!彼らはちょうど....この機能での終了に過負荷をかけていなかったのが残念
マイク・ストーン

56
異常終了は、失敗を表すfalseのステータスでプログラムを終了することに注意してください。デフォルトでは、exitは成功を表すtrueのステータスで終了します。状況に応じて適切なものを使用してください。
Alex Spurling、2011年

1
再。Mike Stoneのコメント、Rubyは互いにコミュニケーションの取れていない人々のチームによって書かれたように見えることがありますね。(それでも、プログラムするのはとても簡単です。)
JellicleCat

24

コードで実際のエラーを示したい場合は、RuntimeError例外を発生させることができます。

raise RuntimeError, 'Message goes here'

これにより、スタックトレース、発生する例外のタイプ、および指定したメッセージが出力されます。ユーザーによっては、スタックトレースが恐ろしすぎる可能性があり、実際のメッセージがノイズで失われる可能性があります。一方、実際のエラーのために死亡した場合、スタックトレースはデバッグのための追加情報を提供します。


24
次のコードは十分ですので、あなたが昇給の一つにはRuntimeErrorを言及する必要はありません(それは例外のデフォルトのようなものが上げます):昇給「のメッセージがここに行く」
sunaku

sunaku-あなたのコメントは完全に有効ですが、特にコードを後で読む他の人にとっては、より明示的にすることが役立つことがよくあります。
シェビー2017年

2

私はそのような関数について聞いたことがありませんが、実装するのに十分なほど簡単でしょう...

def die(msg)
  puts msg
  exit
end

次に、これがすべてのスクリプトに含まれている.rbファイルで定義されている場合、それはゴールデンです...組み込まれていないからといって、自分で実行できないわけではありません;-)


3
「中止」機能がそれを行うことがわかります(下の私の回答を参照)
Chris Bunch

1
なぜ中止機能があなたのためにコードを書くのですか?
Gary Haran 2016

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.