🎃
[Ruby]よく出てくるエラーとその原因
はじめに
よく見かける例外をまとめました。
英語が読めると、理解もしやすいと思うので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