rakeのソースコード(github)にこんな関数がありました。
ruby
1def standard_exception_handling#: nodoc: 2 yield 3rescue SystemExit# Exit silently with current status 4 raise 5rescue OptionParser::InvalidOption => ex 6 $stderr.puts ex.message 7 exit(false) 8rescue Exception => ex# Exit with error message 9 display_error_message(ex) 10 exit_because_of_exception(ex) 11end
rescue修飾子
文法:
式1 rescue 式2
式1で例外が発生したとき、式2を評価します。 以下と同じ意味です。捕捉する例外クラスを指定することはできません。 (つまり、StandardError 例外クラスのサブクラスだけしか捕捉できません)
begin
式1
rescue
式2
end
とありbegin
もないのに例外クラスを指定してる上のコードがよくわからなくなりました。
yield
のブロックにbeginがあることを前提としているのでしょうか?そんなことが可能なのか?
どうなっているのか教えてください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/07/04 07:32