要約
Hash#fetch などで key に対応する value がない場合に発生します。
Ruby 1.8 以前では同様の場面で IndexError が発生していました。互換性のため、KeyError は IndexError のサブクラスになっています。
目次
継承しているメソッド
- Exceptionから継承しているメソッド
特異メソッド
- new(error_message = "") -> KeyError[permalink][rdoc][edit]
- new(error_message = "", receiver:) -> KeyError
- new(error_message = "", key:) -> KeyError
- new(error_message = "", receiver:, key:) -> KeyError
- 
例外オブジェクトを生成して返します。 - [PARAM] error_message:
- エラーメッセージを表す文字列です
- [PARAM] receiver:
- 原因となったメソッド呼び出しのレシーバ
- [PARAM] key:
- 原因となったメソッド呼び出しのキー
 例 h = {foo: 1} err = KeyError.new("Message", receiver: h, key: :bar) p err.message # => "Message" p err.receiver # => {:foo=>1} p err.key # => :bar
インスタンスメソッド
- 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