🎃

[Ruby]よく出てくるエラーとその原因

2021/06/12に公開

はじめに

よく見かける例外をまとめました。
英語が読めると、理解もしやすいと思うのでDeepL翻訳を使いながらまとめていきます。

NameError

タイプミスが原因であることがほとんど。
未定義の変数や定数、privateメソッドを呼び出した時にも発生する。
外部ファイルやライブラリの読み込み忘れの場合もあります。

# distanceメソッドをdistanseと間違えた
undefined local variable or method `distanse' for main:Object (NameError)

# undefined = 未定義
# local variable = ローカル変数

NoMethodError

存在しないメソッドを呼び出そうとしたときに発生する。

  • 単純にメソッド名をタイプミスしている
  • レシーバが想定していた型(クラス)と異なる
  • レシーバがnilになっている
# nilに対して、charsメソッドを呼び出した
undefined method `chars' for nil:NilClass (NoMethodError)

SyntaxError

構文エラーです。
カンマやendの数、括弧が閉じられていないなど。

syntax error, unexpected end-of-input, expecting end (SyntaxError)

# syntax = 構文

TypeError

期待しない型(クラス)がメソッドの引数に渡された時に発生する。

# '1' + 1 文字列と整数を足そうとした
no implicit conversion of Integer into String (TypeError)

implicit conversion = 暗黙の変換

ArgumentError

引数の数が違ったり、期待する値ではなかったときに発生する。

# 引数は1つなのに、2つ渡してしまった
wrong number of arguments (given 2, expected 1) (ArgumentError)

# arguments = 引数

ZeroDivisionError

整数を0で割り算した時に発生する。

# 10 / 0 を実行した
divided by 0 (ZeroDivisionError)

# divided = 分割する

LoadError

requireやloadの実行に失敗したときに発生する。

  • requireしたいファイルのパスや名前が間違っている
  • requireしたgemがインストールされていない
# require './user' としたが存在しないファイルだった
cannot load such file -- ./user (LoadError)

# cannot load such file = そのようなファイルを読み込めない

おわりに

エラーが出るのは日常ですが、簡単なエラーに時間を取られないように、どの辺まで動いているかを確認しながらこまめにコードを書いていきたいです。

Discussion