From: David Vallner Date: 2006-02-07T12:05:10+09:00 Subject: Re: reasons to use else inside rescue Dňa Utorok 07 Február 2006 03:33 Mark Volkmann napísal: > I understand that the code in the else part of a begin block is only > executed if no exceptions are raised by code in the begin block. > However, the same is true of code at the end of the begin block. Why > not put the code there? > > For example, I believe these are equivalent. > > begin > do_something > rescue > handle_exception > else > do_more_stuff > end > > begin > do_something > do_more_stuff > rescue > handle_exception > end > > I suppose a difference is that if "do_more_stuff" raises an exception, > the first example can't rescue it and the second might. Is that the > only difference? > > -- > R. Mark Volkmann > Partner, Object Computing, Inc. There's an else part in a begin / end block?! Oh dear. Heavens protect us... It seems pretty equivalent to plain old: begin do_something rescue handle_exception end do_more_stuff Do we have a syntax guru to elaborate on this? That said, my wild guess would be that in the code fragment (apologies for using different method names): begin foo rescue bar else baz finally quux end (*sic* - messiest code excerpt ever) if #foo didn't raise an Exception, the order of executions would be #foo, #baz, and then #quux. That is, unless the else is nothing more than no-op syntactic sugar for just putting the statements after a begin / rescue / finally block. David Vallner Confused like hell