[mercury-users] Exceptions and unique modes
Peter Ross
peter.ross at miscrit.be
Wed Feb 21 23:05:56 AEDT 2001
On Fri, Feb 16, 2001 at 11:31:50AM +1300, Richard A. O'Keefe wrote:
> This is quite a serious problem for the reasons Peter points out:
> robust code has to be able to survive unexpected exceptions and clean
> up afterwards.
>
> I used to be a big fan of exceptions; I was the one who designed and
> implemented the Quintus exception facility (and I submitted a paper
> about it to an LP conference the year *before* BIM did, only Quintus
> screamed and demanded that it be yanked).
>
> The longer I live, the less I believe in them, precisely because they
> do really horrible things to data flow and even control flow analysis.
> Read some of the stuff that was written during the development of
> Ada 95. Basically, exceptions mean that almost any place can go to
> almost any place, and you never quite know what state things are in.
>
> I think there is ONE place where "has to be able to survive unexpected
> exceptions" is true, and that is where a program loads more code at
> run time and has good reason not to trust it. I met this in a student
> Algol compiler at the University of Auckland. It's one of the reasons
> why Java has exceptions, and one of the reasons why Quintus Prolog has
> them.
>
> Suppose, however, you are writing a program such as a Web server.
> You don't have to handle unexpected *exceptions*,
> you have to handle unexpected *events*.
>
> Erlang programs are made up of lots and LOTS of communicating processes
> which cannot alter shared values. If you want to tell another process
> something unexpected has happened, and the process looks at the message
> when it chooses to, and it processes the message when it chooses to,
> without the slightest hazard to its internal data structures.
>
> When you decide to let unexpected events be modelled as exceptions,
> what you are doing is handing control of process X over to process Y,
> so it is no wonder if managing process X gets hard.
>
> In short, it's not time to fix exceptions, it's time to use a different
> and less dangerous mechanism.
I would be interested to hear how you would write the bit of code which
needs to clean up the map of resources I posted in a previous email in
Erlang.
--------------------------------------------------------------------------
mercury-users mailing list
post: mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe: Address: mercury-users-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------
More information about the users
mailing list