From: Florent Ouchet <florent.ouchet@imag.fr>
To: Eray Ozkural <examachine@gmail.com>
Cc: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] Static exception analysis or alternative to using exceptions
Date: Thu, 27 May 2010 13:10:45 +0200 [thread overview]
Message-ID: <4BFE5335.9050902@imag.fr> (raw)
In-Reply-To: <AANLkTinV_zrD4SXGnhVSb5C1VZqGhy_1VxGpffvGMnKY@mail.gmail.com>
In VSYML [1], the exception Not_found was raised deep in the code in
some functions from List and in some redefined functions (such as
ocamlutils_find_assoc with a custom key comparer). This project can be
assimilable to a code compiler or a code interpreter where these
functions are called during the syntax tree conversion.
There is not "real" problem when the exception is caught at an higher
level but when the exception is not caught at the "deep-1" level, the
user will likely receive the wrong error message and this error will
likely be reported at the wrong position in the VHDL source file. That
was just disturbing and it required some "tact" to find the exact problem.
In version VSYML 1.7, I switched from exception to optional result and
the application is more stable. By using optional result, the required
pattern matching ensures the error handling at the deep-1 level.
[1] VSYML: VHDL Symbolic Simulator in OCaml
http://users-tima.imag.fr/vds/ouchet/vsyml.html
- Florent
Eray Ozkural a écrit :
> On Thu, May 27, 2010 at 11:08 AM, Florent Ouchet <florent.ouchet@imag.fr> wrote:
>
>> Hello,
>>
>> Same here, specially to avoid the Not_found exception.
>> The optional return values gives the oportunity to have a clear view of what
>> is being done if the result is not available.
>>
>
> That depends on the code, I think. In some cases the exception may
> arise from deep in the code, and it would make sense not to bother
> with a lot of type overhead for many levels of nesting and function
> calling. But if all you are doing is checking the success of a
> function, I suppose option types will be more efficient.
>
> Best,
>
>
--
Florent Ouchet
PhD Student
CIS/VDS Team - TIMA Laboratory
next prev parent reply other threads:[~2010-05-27 11:10 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
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
-- strict thread matches above, loose matches on Subject: below --
2010-06-01 19:08 Peter Ronnquist
2010-05-26 16:15 Hans Ole Rafaelsen
2010-05-27 9:34 ` [Caml-list] " Alain Frisch
2010-05-27 17:01 ` Richard Jones
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
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=4BFE5335.9050902@imag.fr \
--to=florent.ouchet@imag.fr \
--cc=caml-list@yquem.inria.fr \
--cc=examachine@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