Javaや.NETをやってた人にしてみると、Exceptionクラスは普通の例外の代表のように考えてしまうかもしれません。 しかしRubyのExceptionはNoMemoryError等の致命的な例外の親クラスにもなっているため、例外の型を指定しないrescue節では補足されません。 補足されるのは通常の実行時エラーを表すStandardErrorとそのサブクラス(ArgumentError等)になります。 require 'rspec' describe 'rescue' do shared_examples_for 'rescue StandardError' do it 'should rescue StandardError' do -> { subject.call(StandardError) }.should_not raise_error end end context