caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "Till Varoquaux" <till.varoquaux@gmail.com>
To: "Bünzli Daniel" <daniel.buenzli@erratique.ch>
Cc: "caml-list List" <caml-list@inria.fr>
Subject: Re: [Caml-list] [OSR] Exceptionless error management
Date: Thu, 31 Jan 2008 09:57:30 +0000	[thread overview]
Message-ID: <9d3ec8300801310157r77b86fc0k80f40b1df36091c2@mail.gmail.com> (raw)
In-Reply-To: <F5231A73-DA8B-4FE8-8B7F-C478F1A65585@erratique.ch>

My cocan account is not created yet soo I will answer here:
_ In the thread you are pointing to Xavier did not say using
exceptions was a mistake, he said the Failure exception (such as
int_of_string) was legacy code and not great.
_ Allowing Invalid_argument seems a little to hardcore. When doing
system programming for instance there is an incredible range of
exceptional events that can happen, you are definitly not going to
handle all of them (or are you?) so you will need to let them trickle
up. This will eventually require using something akin to an error
monad and some awfull mangling with polymorpic variants.
_Exceptions are terse. Suppose Map.find returned an option type (and
this seems a sensible choice). If you were in a place where not being
in the map really was an exceptional event you'd need to unbox and do
some error handling for every lookup (and since you do not want to
raise an exception I must wonder what you would do). Not only is this
cumbersome, but it also is bound to be slow and lead to some loss of
information (no more printexc, backtrace...) unless you jump through a
lot of hoops.

Here is my take:
_You should try to keep exceptions for exceptional cases. If you think
you might need to catch them do not hesitate to create your own
exception.
_For functions like find... declare two functions: one that boxes it's
return value (i.e val input_line : in_channel -> string option) and
another that raises an exception (i.e val input_line_exn : in_channel
-> string).

Till
On Jan 31, 2008 8:55 AM, Bünzli Daniel <daniel.buenzli@erratique.ch> wrote:
> Hello,
>
> Based on discussions and the resulting consensus that occured more
> than once on this list. I wrote a recommendation on how modules should
> perform error management. It is available here :
>
> http://cocan.org/osr/exceptionless_error_management
>
> Best,
>
> Daniel
>
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>



-- 
http://till-varoquaux.blogspot.com/

  reply	other threads:[~2008-01-31  9:57 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-31  8:55 Bünzli Daniel
2008-01-31  9:57 ` Till Varoquaux [this message]
2008-01-31 11:01   ` [Caml-list] " Bünzli Daniel
2008-01-31 14:09     ` Andrej Bauer
2008-01-31 14:16       ` Michael Ekstrand
2008-01-31 19:28         ` David Teller
2008-01-31 19:59           ` Michael Ekstrand
2008-01-31 20:05           ` blue storm
2008-01-31 20:03       ` Bünzli Daniel
2008-01-31 20:25         ` David Teller
2008-01-31 20:40           ` David Teller
2008-01-31 21:16           ` Bünzli Daniel
2008-01-31 21:31             ` David Teller
2008-01-31 21:35           ` Jon Harrop
2008-01-31 22:01           ` Christophe Raffalli
2008-02-01  7:27         ` Michaël Grünewald
2008-02-01  7:47           ` Bünzli Daniel
2008-02-01 10:50             ` Till Varoquaux
2008-02-01 11:31               ` Bünzli Daniel
2008-02-01 15:59                 ` Vincent Hanquez
2008-02-01 18:37                   ` Bünzli Daniel
2008-02-01 19:43                     ` Vincent Hanquez
2008-02-01 16:04                 ` David Allsopp
2008-02-01  8:31 ` David Teller
2008-02-01 12:19   ` Yaron Minsky
2008-02-05 10:00 ` David Teller
2008-02-05 10:12   ` Vincent Hanquez
2008-02-05 10:26     ` Bünzli Daniel
2008-02-05 11:06       ` Vincent Hanquez
2008-02-05 13:46         ` Jon Harrop
2008-02-05 11:36       ` Frédéric van der Plancke
2008-02-06  8:45       ` Michaël Grünewald
2008-02-08 13:09         ` Bünzli Daniel
2008-02-05 14:12     ` David Teller
2008-02-11  8:12 ` David Teller
2008-02-11  9:09   ` Bünzli Daniel

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=9d3ec8300801310157r77b86fc0k80f40b1df36091c2@mail.gmail.com \
    --to=till.varoquaux@gmail.com \
    --cc=caml-list@inria.fr \
    --cc=daniel.buenzli@erratique.ch \
    /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;
as well as URLs for NNTP newsgroup(s).