From: Martin <martin.dowie@btopenworld.com>
Subject: Re: Common exception handling
Date: Wed, 10 Sep 2008 15:51:37 -0700 (PDT)
Date: 2008-09-10T15:51:37-07:00 [thread overview]
Message-ID: <94a89839-2e48-4c6e-922f-5d12584d28db@d77g2000hsb.googlegroups.com> (raw)
In-Reply-To: 87eccd6a-2223-4295-86e5-54986fbf1530@s1g2000pra.googlegroups.com
On Aug 29, 4:31 pm, Adam Beneschan <a...@irvine.com> wrote:
> On Aug 29, 1:32 am, Martin <martin.do...@btopenworld.com> wrote:
>
>
>
> > On 26 Aug, 15:43, Adam Beneschan <a...@irvine.com> wrote:
>
> > > On Aug 26, 6:47 am, shaunpatter...@gmail.com wrote:
>
> > > > Yeah, it looks like the extra layer of exception handling is the only
> > > > way. I was hoping I could avoid that if possible.
>
> > > No, I don't think it's the only way. I'm surprised no one has
> > > suggested this:
>
> > > exception
> > > when E : others =>
> > > Print_Test (Rec);
> > > declare
> > > use Ada.Exceptions;
> > > begin
> > > if Exception_Identity(E) = A'Identity then
> > > ... handling for A
> > > elsif Exception_Identity(E) = B'Identity then
> > > ... handling for B
> > > etc.
> > > else
> > > ... handling for other exceptions you didn't expect,
> > > ... but you certainly need to aware that it could
> > > ... happen
> > > raise; --maybe
> > > end if;
> > > end;
>
> > > -- Adam
>
> > Surely you missed a smiley off this suggestion!!! :-)
>
> Well, I do often post silly things without smileys and assume everyone
> is astute enough to figure out that I was trying to be funny. But I
> wasn't being funny here. Although the above looks somewhat ugly, I
> can imagine that a solution of this sort may be entirely appropriate
> in some cases. Suppose, for example, that the common code isn't just
> at the beginning, but is also at the end, or maybe even in the middle;
> the nested exception handler/reraise solution might not be so clean in
> that case. Another problem with the nested exception handler solution
> is that it could incur extra overhead since exception raising isn't
> necessarily cheap. That shouldn't matter in most cases, but sometimes
> it might. So I don't understand why the above is so ridiculous as to
> merit the comment you gave.
>
> I would say, though, that if your exception-handling code gets that
> complex, it might be time to think about declaring just one exception
> and a separate data structure for passing additional exception info
> around.
>
> -- Adam
Sorry - back again!
It was mostly the (to my eyes) sheer "ugliness" of the
if..elsif..elsif..end if;.
I find these sorts of structures very hard to follow (was there a
sneeky 'and then <boolean_expression>' snuck into one of the
branches???
-- Martin
next prev parent reply other threads:[~2008-09-10 22:51 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-26 12:17 Common exception handling shaunpatterson
2008-08-26 12:37 ` Ludovic Brenta
2008-08-26 12:39 ` Martin
2008-08-26 12:48 ` Ludovic Brenta
2008-08-26 12:58 ` Martin
2008-08-26 13:47 ` shaunpatterson
2008-08-26 14:43 ` Adam Beneschan
2008-08-26 15:10 ` Dmitry A. Kazakov
2008-08-26 16:49 ` Adam Beneschan
2008-08-26 19:14 ` Dmitry A. Kazakov
2008-08-26 20:22 ` Maciej Sobczak
2008-08-27 8:16 ` Dmitry A. Kazakov
2008-08-27 9:20 ` Georg Bauhaus
2008-08-29 8:32 ` Martin
2008-08-29 15:31 ` Adam Beneschan
2008-09-10 22:51 ` Martin [this message]
2008-09-11 14:57 ` Adam Beneschan
2008-08-26 15:18 ` Jean-Pierre Rosen
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox