Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Exceptionクラス > cause

instance method Exception#cause

cause -> Exception | nil[permalink][rdoc]

self の前の例外(self が rescue 節や ensure 節の中で発生した例外の場合、その前に発生していた元々の例外)を返します。存在しない場合は nil を返します。



begin
  begin
    raise "inner"
  rescue
    raise "outer"
  end
rescue
  p $!       # => #<RuntimeError: outer>
  p $!.cause # => #<RuntimeError: inner>
end