Re: Common exception handling
- From: Adam Beneschan <adam@xxxxxxxxxx>
- Date: Fri, 29 Aug 2008 08:31:03 -0700 (PDT)
On Aug 29, 1:32 am, Martin <martin.do...@xxxxxxxxxxxxxxx> wrote:
On 26 Aug, 15:43, Adam Beneschan <a...@xxxxxxxxxx> wrote:
On Aug 26, 6:47 am, shaunpatter...@xxxxxxxxx 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
.
- References:
- Common exception handling
- From: shaunpatterson
- Re: Common exception handling
- From: shaunpatterson
- Re: Common exception handling
- From: Martin
- Common exception handling
- Prev by Date: Re: Common exception handling
- Next by Date: and then... (a curiosity)
- Previous by thread: Re: Common exception handling
- Next by thread: Re: www.ada-auth.org is down
- Index(es):
Relevant Pages
|