要約
Hash#fetch などで key に対応する value がない場合に発生します。
Ruby 1.8 以前では同様の場面で IndexError が発生していました。互換性のため、KeyError は IndexError のサブクラスになっています。
目次
継承しているメソッド
- Exceptionから継承しているメソッド
インスタンスメソッド
key -> object
[permalink][rdoc][edit]-
KeyError の原因となったメソッド呼び出しのキーを返します。
- [EXCEPTION] ArgumentError:
- キーが設定されていない時に発生します。
例:
h = Hash.new begin h.fetch('gumby'*20) rescue KeyError => e p e.message # => "key not found: \"gumbygumbygumbygumbygumbygumbygumbygumbygumbygumbygumbygumbyg..." p 'gumby'*20 == e.key # => true end
receiver -> object
[permalink][rdoc][edit]-
KeyError の原因となったメソッド呼び出しのレシーバを返します。
- [EXCEPTION] ArgumentError:
- レシーバが設定されていない時に発生します。
例:
h = Hash.new begin h.fetch('gumby'*20) rescue KeyError => e p e.message # => "key not found: \"gumbygumbygumbygumbygumbygumbygumbygumbygumbygumbygumbygumbyg..." p h.equal?(e.receiver) # => true end