例外処理
raise
- 例外を発生させる。
文法:
例:
raise # RuntimeError を発生させる
raise "you lose" # RuntimeError を発生させる
raise SyntaxError, "invalid syntax" # SyntaxError を発生させる
raise SyntaxError.new("invalid syntax") # SyntaxError を発生させる
begin
- 発生した例外を捕捉する。
文法:
例:
rescue
節
- 本体の実行中に例外が発生した場合、
rescue
で例外を捕捉できる。 - 発生した例外と一致する
rescue
節が存在する時にはrescue
節の本体が実行される。 - 複数の
rescue
がある場合、最初に該当したrescue
節が実行される。 - 一般的なエラーよりも特定的なエラーから順に
rescue
するのが良い。(例えば、rescue StandardError
は最後に記述する)
class SomeError < StandardError; end
class SomeOtherError < SomeError; end
def meth1
raise SomeOtherError.new("error")
end
begin
meth1
rescue SomeError
print "SomeError"
rescue SomeOtherError
print "SomeOtherError"
end
# => "SomeError"
else
節
- 本体の実行によって例外が発生しなかった場合に評価される。
ensure
節
begin
式を終了する直前に必ずensure
節の本体を評価します。