自分でプログラムを書いて実行してみると、想定と違って英文がずらずらと表示されることがある。エラーだ。最初はびっくりするが、発生したときにはそのメッセージを読むことで解消できることも多い。
エラーとその原因
よく発生するエラー(例外クラス)と考えられる原因の例。
コードは、irb
で実際にエラーを発生させたもの(バックトレースは省略)。
NameError
- 未定義のローカル変数や定数、privateメソッドなどを呼び出した
- 外部ファイルの
require
を忘れた
val = name # nameという変数は定義されていない # エラー文 NameError (undefined local variable or method `name' for main:Object)
NoMethodError
put "Hello!" # putsのスペルミス # エラー文 NoMethodError (undefined method `put' for main:Object) Did you mean? puts putc
TypeError
- メソッドの引数が期待しない型(クラス)だった
10 + "1" # 数値と文字列の足し算はできない # エラー文 TypeError (String can't be coerced into Integer)
ArgumentError
- 引数の数が違う
- 引数が期待する値と異なる
"apple".count # countはカウントする文字のパターンを引数として渡す必要がある # エラー文 ArgumentError (wrong number of arguments (given 0, expected 1+))
ZeroDivisionError
- 整数を0で割ろうとした
5 / 0 # 5 ÷ 0 # エラー文 ZeroDivisionError (divided by 0)
SystemStackError
- システムスタックがあふれた(無限ループなど)
LoadError
require
やload
の実行に失敗
SyntaxError
構文エラー。たいていプログラムの起動自体に失敗する。
end
や,
の数の過不足- 閉じかっこ忘れ
irb
でいい例がなかったので、以下はuser.rbというファイルを実行した例。わざとif文のend
を消してみた。
user.rb:22: syntax error, unexpected end-of-input, expecting `end'
end
が必要だと指摘してくれている。