LoginSignup
0
0

More than 5 years have passed since last update.

Ruby の ensure が実行される条件のメモ

Posted at

rescue 節内で raise したときに ensure が実行されるのかされないのか、いつも思い出せないのでメモっておく
(下記の irb を実行するのはもう4回目くらいになると思う)

実行したのは

$ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [universal.x86_64-darwin17]

です。

irb(main):016:0> begin
irb(main):017:1*   raise "a"
irb(main):018:1> rescue => e
irb(main):019:1>   puts "in rescue"
irb(main):020:1>   raise
irb(main):021:1> ensure
irb(main):022:1*   puts "in ensure"
irb(main):023:1> end
in rescue
in ensure
RuntimeError: a
    from (irb):17
    from /usr/bin/irb:11:in `<main>'

これを見るに、rescue 節で raise すると、 ensure を通りつつ例外があがっていくようである。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0