本文へスキップ
BecomeCoder

Rubyのエラー · エラー7

KeyError ― Hashのfetchで存在しないキーを指定した

ハッシュ[] でアクセスすると無いキーは静かに nil を返しますが、fetch で無いキーを指定すると例外になります。「キーが無いことに気づかず処理を続けたくない」場面でわざと fetch を使うことも多いです。

出るコード

user = { name: "Aoi" }
user.fetch(:age)   # :age キーは無い

エラーメッセージ

key not found: :age (KeyError)

直し方

fetch の第2引数にデフォルト値を渡すか、key? で存在確認してからアクセスします。

user.fetch(:age, 0)          # 無ければ 0
user[:age] if user.key?(:age)