From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Exception_Occurence and language designers
Date: Tue, 5 Dec 2017 09:35:12 +0100
Date: 2017-12-05T09:35:12+01:00 [thread overview]
Message-ID: <p05lnv$1p12$1@gioia.aioe.org> (raw)
In-Reply-To: p04ohh$kaa$1@dont-email.me
On 05/12/2017 01:16, G. B. wrote:
> Dmitry A. Kazakov <mailbox@dmitry-kazakov.de> wrote:
>> On 2017-12-04 21:27, G. B. wrote:
>>> Dmitry A. Kazakov <mailbox@dmitry-kazakov.de> wrote:
>>>
>>>> In Ada 83 exception was not a first-class type.
>>>
>>> Still isn’t.
>>
>> But its "class-wide" type Exception_Occurrence is.
>
> Exception_Occurrence feels like an enumeration, > to me at least, albeit of places in a program,
> thus of a rather special set of “values”.
"Enumeration" is Exception_Id.
>> Then it became clear that the exception should carry
>> user-defined and other information.
>
> User-defined information being strings, and
> other information being places to be embedded in
> strings, plus names of exceptions.
>
> How about this: the idea of creating normal,
> typed objects as payload of wild jumps in
> abnormal (exceptional) situations is rather optimistic.
It is no matter what is freely typed, exception itself or the attached
object. The problem is upward closures. Consider this:
begin
declare
type Message_In_The_Bottle is new Controlled with ...;
overriding procedure Finalize (E in out Message_In_The_Bottle);
...
begin
raise Hey with Message_In_The_Bottle'(...);
end;
exception
when Error : Hey =>
-- The object of a dead type here
This works in C++ because there all types are global.
One possible solution is to have the type Root_Exception_Attachment and
derive every exception-attached object type from there. When the scope
of the type is left upon exception propagation the object will be
demoted to its still existing parent.
Apart from being not very useful and requiring a lot of overhead upon
propagation, the existing Ada finalization model cannot handle this. The
attached type's Finalize must be called upon conversion, but the
parent's Finalize not. Then the added components must be finalized. Ada
cannot such this now.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2017-12-05 8:35 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-04 11:17 Exception_Occurence and language designers Mehdi Saada
2017-12-04 12:32 ` Simon Wright
2017-12-04 14:00 ` Mehdi Saada
2017-12-04 14:31 ` Dmitry A. Kazakov
2017-12-04 20:27 ` G. B.
2017-12-04 20:55 ` Dmitry A. Kazakov
2017-12-05 0:16 ` G. B.
2017-12-05 8:35 ` Dmitry A. Kazakov [this message]
2017-12-05 20:05 ` G. B.
2017-12-05 20:48 ` Dmitry A. Kazakov
2017-12-04 17:43 ` Jeffrey R. Carter
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox