0
0

Rubyで発生した例外クラスをまとめてみた

Posted at

はじめに

Rubyでコードを書いていて発生したエラーを自分用にまとめてみました。

NameError

定義されていない変数や定数を呼び出そうとすると発生するエラー。
呼び出す変数の名前を間違ったりしてよく起こしました。

変数名の間違い
name = "Taro"
#nameがnamaになっている 
p nama
出力
undefined local variable or method 'nama' for ...(NameError)

NoMethodError

メソッド名を間違えた時や、呼び出せないメソッドを呼び出そうとしたときに発生するエラー。
個人的にはレシーバが想定に反してnilになっている場合が多かったです。

メソッド名の間違い
a = [1, 2, 3]
#eachがeechになっている
a.eech do |n|
  sum += n
end
出力
undefined method `eech' for ... (NoMethodError)
privateメソッドをクラス外部から呼び出す
class Private
  private

  def secret
    "秘密"
  end
end

private = Private.new
p private.secret
出力
private method `secret' called for ... (NoMethodError)
レシーバがnilだった場合
a = nil

a.push(1)
出力
undefined method `push' for nil:NilClass (NoMethodError)

TypeError

整数と文字を足そうとしたときのように、期待しない型がメソッドの引数に渡されたときに出るエラー。

1と' 1 'を足す
1 + '1'
出力
String can't be coerced into Intager (TypeError)

ArgumentError

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

メソッドの引数が違う
def sum(a, b, c)
  a + b + c
end
#引数が少ない
sum(1, 2)
出力
wrong number of arguments (given 2, expected 3) (ArgumentError)

SyntaxError

endやカンマの数が足りなかったり、カッコが閉じられていなかったときに発生するエラー。

endが足りない
a = nil

if a == nil
   p "何もなかった!"
出力
syntax error, unexpected end-of-input, expecting `end'
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0