要約
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