AWS Lambdaでいろいろやっていて,LambdaではよくRubyを書く.でも仕事ではPerlメインなのでしばしば文法を忘れてしまうのでメモしておく.
rescue
begin # ここでなんか例外を送出する rescue => err # ここで拾うことができる end
rescue
の箇所はrescue Net::HogeFugaError => err
のようにエラーを指定して書くこともできる.
またエラーの型を指定する場合は多段にrescue
することができる.
当然ながら,begin
.. rescue
で守られるのはレキシカルな範囲に留まらず,その中から呼び出したどこかのメソッドで起こった例外も拾うことができる.
def f raise "error" end def g begin puts f() rescue => err puts "error occurred" end end g() # => error occurred