caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Benjamin Geer <ben@socialtools.net>
To: Richard Jones <rich@annexia.org>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] PostgreSQL-OCaml 1.0.1
Date: Fri, 30 Jan 2004 12:56:43 +0000	[thread overview]
Message-ID: <401A548B.2090603@socialtools.net> (raw)
In-Reply-To: <20040130122311.GA29288@redhat.com>

Richard Jones wrote:
> It throws Sql_error when it can determine an error.

Another thing I forgot to bring up about error handling.  If an error 
occurs, you generally want to roll back the transaction.  If you're 
using a connection pool, you want to make sure you close the connection 
when you're done with it, regardless of whether the transaction was 
committed or rolled back.  Committing a transaction, rolling back a 
transaction, and closing a connection are all operations that could also 
throw exceptions.  Writing out all those try-with expressions every time 
becomes very verbose and error-prone.  I think this is the sort of 
problem that functional programming is really well suited to.  For 
example, you could have a standard function like this:

let do_f_with_error_handling f conn = ...

It would begin a transaction on the specified connection, run f, handle 
any exceptions by rolling back the transaction (or else commit it if 
there were no errors), then close the connection (also handling any 
errors).  It would return the value returned by f, or if it caught an 
exception, it would throw that exception (after cleaning up).

(This is one of the annoying things about JDBC; I tend to write 
pseudo-functional classes to do this sort of thing in Java, but in Caml 
it would be much more straightforward.)

Ben

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


  parent reply	other threads:[~2004-01-30 12:56 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-01-30 12:02 Richard Jones
2004-01-30 12:15 ` Benjamin Geer
2004-01-30 12:23   ` Richard Jones
2004-01-30 12:30     ` Richard Jones
2004-01-30 12:43     ` Benjamin Geer
2004-01-30 12:56     ` Benjamin Geer [this message]
2004-01-30 13:22       ` Richard Jones
  -- strict thread matches above, loose matches on Subject: below --
2004-01-28 18:32 Markus Mottl
2004-01-28 22:44 ` Stefano Zacchiroli
2004-01-28 23:21   ` Markus Mottl
2004-01-29  9:38     ` Sven Luther
2004-01-29 18:18     ` Alain.Frisch
2004-01-29 20:06       ` Richard Jones
2004-01-29 23:36         ` Markus Mottl
2004-01-30  5:50         ` Josh Burdick
2004-01-30  7:37           ` Shawn Wagner
2004-01-30  8:21           ` Vitaly Lugovsky
2004-01-30 10:24             ` Benjamin Geer
2004-01-30 10:47               ` Richard Jones
2004-01-30 14:58                 ` Gerd Stolpmann
2004-01-30 15:46                   ` Richard Jones
2004-01-30 11:14               ` Markus Mottl
2004-01-30 11:25               ` Vitaly Lugovsky
2004-01-30 11:41                 ` Benjamin Geer
2004-01-30 16:44               ` Alex Baretta
2004-01-30 16:49                 ` Benjamin Geer
2004-01-30  8:23           ` Alain.Frisch
2004-02-01 21:03   ` Alain.Frisch

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=401A548B.2090603@socialtools.net \
    --to=ben@socialtools.net \
    --cc=caml-list@inria.fr \
    --cc=rich@annexia.org \
    /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).