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

class KeyError

クラスの継承リスト: KeyError < IndexError < StandardError < Exception < Object < Kernel < BasicObject

要約

Hash#fetch などで key に対応する value がない場合に発生します。

Ruby 1.8 以前では同様の場面で IndexError が発生していました。 互換性のため、KeyErrorIndexError のサブクラスになっています。

目次

インスタンスメソッド
key receiver

インスタンスメソッド

key -> object[permalink][rdoc]

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]

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