C# や Java ならこうじゃないですか。
try {
// 例外おきるかもしれね
} catch (Exception e) {
// 例外処理
} finally {
// 後始末
}
Ruby ならこう書きます。
begin
# 例外おきるかもしれね
rescure
# 例外処理
ensure
# 後始末
end
対応させたら何てことないですね。
例外を発生させるには、raise を使用します。
# RuntimeError を発生
raise
# 指定のメッセージを持つ RuntimeError を発生
raise "れーがいはっせーーーーー!!"
# 例外クラスを指定して例外発生
raise ArgumentError, "こら!!", caller
caller はスタックトレースを生成するメソッドです。
ちなみに raise もメソッドです。
メッセージを指定した例外発生の構文は使いやすそうですね。
んで、Ruby には catch と throw ってのもあります。
catch :done do
# なんか処理
throw :done
# なんか処理
end
# 次の処理
catch ブロック内で throw されるとその時点で処理は catch ブロック後に移ります。
なんだろ?ループをまとめて抜けたいときにでも使えばいいのかな?
しかし後発なんだから、キーワード的に考えてくれてもいいんじゃないかなー。
どうせ throw, catch 使うんだから try - catch - finally でもいーやん。