Rubyにおける例外クラス
Exception
NoMemoryError
ScriptError
LoadError
NotImprementedError
SyntaxError
SecurityError
SignalExeption
interrupt
StandardError
ArgumentError
...
NameError
NoMethodError
RuntimeError
FrozenError
...
ZeroDivisionError
SystemExit
SystemStackError
fatal
/icons/hr.icon
NoMethodError
クラス・モジュールの継承リスト:
NoMethodError < NameError < StandardError < Exception < Object < Kernel < BasicObject
NoMethodError って NameError を継承してたのか、知らなかった
メソッド呼び出しの形式でなければ NameError 例外が発生します。
へぇ〜、そうか
てか、それはそうか、変数かメソッドかわからないもんね
code:rb
bar
# => undefined local variable or method `bar' for main:Object (NameError)
/icons/hr.icon
SystemExit
Ruby インタプリタを終了させるときに発生します。
exitするとき例外を発生させていたんだねぇ
exit は例外 SystemExit を発生させることによってプログラムの実行を終了させますので、必要に応じて begin 節で捕捉することができます。
つまり、SystemExitをrescueするとプログラムの実行は継続する!
code:exit_test.rb
begin
exit
rescue SystemExit
p 'rescued!'
end
p 'continuing!'
code:sh
% ruby exit_test.rb
"rescued!"
"continuing!"