(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

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.

···

On 8/25/06, Mat Schaffer <schapht@gmail.com> wrote:

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
}

--
Rick DeNatale

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

Rick DeNatale wrote:

···

On 8/25/06, Mat Schaffer <schapht@gmail.com> wrote:

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
}

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.

Hal

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/25/06, Hal Fulton <hal9000@hypermetrics.com> wrote:

Rick DeNatale wrote:
> On 8/25/06, Mat Schaffer <schapht@gmail.com> wrote:
>
>> 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
>> }
>>
>
> 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.

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/27/06, Mat Schaffer <schapht@gmail.com> wrote:

> >> Would this be unreasonable?
> >>
> >> foo {
> >> blah
> >> rescue ExceptionA
> >> handle A
> >> rescue ExceptionB
> >> handle B
> >> ensure
> >> finish things
> >> }
> >>
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.

--
Austin Ziegler * halostatue@gmail.com * http://www.halostatue.ca/
               * austin@halostatue.ca * You are in a maze of twisty little passages, all alike. // halo • statue
               * austin@zieglers.ca

> > >> Would this be unreasonable?
> > >>
> > >> foo {
> > >> blah
> > >> rescue ExceptionA
> > >> handle A
> > >> rescue ExceptionB
> > >> handle B
> > >> ensure
> > >> finish things
> > >> }
> > >>
> 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.

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

···

On 8/28/06, Austin Ziegler <halostatue@gmail.com> wrote:

On 8/27/06, Mat Schaffer <schapht@gmail.com> wrote:

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
--
Austin Ziegler * halostatue@gmail.com * http://www.halostatue.ca/
               * austin@halostatue.ca * You are in a maze of twisty little passages, all alike. // halo • statue
               * austin@zieglers.ca