(again) Rescue clauses on do/end blocks?

Sorry to beat a dead horse, but I still have a question on the
optional ‘begin’ sentiment when rescuing exceptions. It seems like
the standing issue was with the use of it in brackets. Especially
when deciding which exception to catch or adding an ensure.

Would this be unreasonable?

foo {
blah
rescue ExceptionA
handle A
rescue ExceptionB
handle B
ensure
finish things
}

Actually, it feels a little like a goto now that I type it out. That
could be a bad sign…
-Mat

On 8/25/06, Mat S. [email protected] wrote:

 handle A

rescue ExceptionB
handle B
ensure
finish things
}

For one thing, it’s syntactically incorrect, rescue can only appear
inside either a begin block, or in a method def, where def methodname
acts like begin for this purpose, or as a modifier on a single
statement.

Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

Rick DeNatale wrote:

blah
inside either a begin block, or in a method def, where def methodname
acts like begin for this purpose, or as a modifier on a single
statement.

Yes, but he’s proposing a change in the syntax.

Hal

On 8/25/06, Hal F. [email protected] wrote:

foo {
For one thing, it’s syntactically incorrect, rescue can only appear
inside either a begin block, or in a method def, where def methodname
acts like begin for this purpose, or as a modifier on a single
statement.

Yes, but he’s proposing a change in the syntax.

Well re-proposing it anyway. I’m mostly curious if there’s some
fundamental problem with it that I’m not seeing. Since this
particular syntax wasn’t proposed the last time the discussion went
around.
-Mat

On 8/27/06, Mat S. [email protected] wrote:

}

Well re-proposing it anyway. I’m mostly curious if there’s some
fundamental problem with it that I’m not seeing. Since this
particular syntax wasn’t proposed the last time the discussion went
around.

IIRC, Matz thinks it’s ugly (I can’t say I disagree, even though I
desire the functionality). I think it’s one of the few cases where
it’s worth the ugliness to be orthogonal here.

Most people won’t like how {} with rescue looks and probably switch to
do/end if the need rescue. The only think I can think of is maybe:

foo { bar rescue nil }

Is that still the post version?

-austin

On 8/28/06, Austin Z. [email protected] wrote:

ensure
it’s worth the ugliness to be orthogonal here.
Unless we try to be orthogonal in a different way like e.g.
do,begin => {
end => }
rescue => who am I to propose something here, but a short “symbol rather
than keyword”
is in my mind, maybe let us look at some
enusre => see above

{
stupid
? # too overloaded cannot be used in the same line with stupid
intelligent
}

{
stupid
||| # just kidding
intelligent
<<< # see above
necessary
}

{
stupid
?? StupidError => se
intelligent
!!
necessary
}

Hmm I think it was worth spelling it out => UGLY :frowning:

Robert