web-dev-qa-db-ja.com

レスキューでのエラーの出力(Ruby / Rails)

簡単な質問です。私はドキュメントでそれを見つけることができません。

標準のbegin ... rescueを使用する場合、すべてのエラーまたはスタックトレースをレスキューに出力するにはどうすればよいですか?

例えば。:

begin 
    do x
rescue
    puts errors
end

何か案は?

52
overtone

エラーを取得するには、少なくとも2つの方法があります。 1つ目は、グローバル変数$!を使用することです。常に最後に発生したエラーに設定されます。 2つ目は、レスキュー時に明示的にエラーをキャプチャすることです。

begin
  # do something that fails...
rescue => error
  # error and $! are equivalent here
end

いずれかを使用すると、次のいずれかを使用してバックトレースを検査または印刷できます。

$!.backtrace # => array of backtrace steps
error.backtrace # => same error
77
Peter Brown