From: Richard Jones <rich@annexia.org>
To: Hans Ole Rafaelsen <hrafaelsen@gmail.com>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Static exception analysis or alternative to using exceptions
Date: Thu, 27 May 2010 18:01:22 +0100 [thread overview]
Message-ID: <20100527170122.GA28273@annexia.org> (raw)
In-Reply-To: <AANLkTimsqfR_SUiytZa_I74_858lm51tbzpCqR1SHCrp@mail.gmail.com>
On Wed, May 26, 2010 at 06:15:05PM +0200, Hans Ole Rafaelsen wrote:
> What experience does people have to using alternatives to exceptions, such
> as option types or exception monads? Does use of third part libraries that
> still throws exceptions make such approaches hard to use? Performance wise
> it seems to be comparable to catching exceptions or matching for options, so
> I guess the difference be might a question of programming style?
Personally I've found that you should only throw those exceptions
which can be caught in a single place in the program. By this I mean
that an exception such as Not_found shouldn't be thrown, and instead
it would be better to use an option type (for stdlib functions which
throw Not_found, you have to be _very_ careful that the exception
cannot "escape").
However if the exception is, say, an I/O error reading a disk file,
these should be thrown, and caught somewhere central where you can
display an error message to the user (for GUI programs) or abort the
current transaction (for server programs). Recovering from such
exceptions properly is still tricky though. Since OCaml lacks
'finally', you either have to use a 'finally' impl from a library, or
modify your code to not need it (eg. turning calls to 'open_in' and
'open_out' into a kind of continuation-passing style). Or for small
programs, abort the program and don't deal with recovery at all.
All in all, this is not ideal for writing correct programs. Some sort
of exception analysis would be most welcome.
Rich.
--
Richard Jones
Red Hat
next prev parent reply other threads:[~2010-05-27 17:01 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-26 16:15 Hans Ole Rafaelsen
2010-05-27 9:34 ` [Caml-list] " Alain Frisch
2010-05-27 17:01 ` Richard Jones [this message]
2010-05-27 21:13 ` Dario Teixeira
2010-05-31 14:36 ` Goswin von Brederlow
2010-05-31 15:00 ` Florent Ouchet
2010-05-31 17:24 ` David Allsopp
2010-05-31 20:51 ` Török Edwin
2010-06-08 9:16 ` Goswin von Brederlow
2010-05-31 19:30 ` Nicolas Pouillard
2010-05-31 20:57 ` Lukasz Stafiniak
2010-05-31 21:42 ` blue storm
2010-05-31 19:36 ` Christophe Raffalli
2010-05-26 17:30 Dario Teixeira
2010-05-26 21:10 ` Hans Ole Rafaelsen
2010-05-27 3:37 ` Jacques Le Normand
2010-05-27 8:08 ` Florent Ouchet
2010-05-27 8:50 ` Eray Ozkural
2010-05-27 11:10 ` Florent Ouchet
2010-05-27 8:54 ` David Allsopp
2010-05-27 9:11 ` Mark Shinwell
2010-05-27 9:29 ` David Allsopp
2010-05-27 9:12 ` Daniel Bünzli
2010-05-27 9:19 ` David Allsopp
2010-05-27 9:15 ` David Rajchenbach-Teller
2010-05-27 13:56 ` Hezekiah M. Carty
2010-06-01 19:08 Peter Ronnquist
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100527170122.GA28273@annexia.org \
--to=rich@annexia.org \
--cc=caml-list@inria.fr \
--cc=hrafaelsen@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox