caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Hendrik Tews <tews@tcs.inf.tu-dresden.de>
To: Oliver Bandel <oliver@first.in-berlin.de>, caml-list@inria.fr
Subject: Re: [Caml-list] Catching errors (Unix-Module)
Date: Tue, 16 Apr 2002 15:56:47 +0200 (CEST)	[thread overview]
Message-ID: <15548.11679.501664.154023@gargle.gargle.HOWL> (raw)
In-Reply-To: <Pine.LNX.3.95.1020416150158.240A-100000@first.in-berlin.de>

Oliver Bandel writes:
   Date: Tue, 16 Apr 2002 15:04:34 +0200 (MET DST)
   Subject: Re: [Caml-list] Catching errors (Unix-Module)
   
   OK, let's try it:
     [...]   

   This expression has type unit but is here used with type Unix.stats

   Or is there a general problem with that code?
   
Well, the catch has to return something compatible with
Unix.stat. So you can try

1. use optional values 

    try
     Some (Unix.stat "/foo/bar")
    with
    | Unix.Unix_error (code, func, file) ->
      Printf.fprintf stderr "Couldn't %s '%s': %s!\n"
	func file (Unix.error_message code);
      None
    ;;

2. reraise the exception

    try
     Unix.stat "/foo/bar"
    with
    | Unix.Unix_error (code, func, file) as exec ->
      Printf.fprintf stderr "Couldn't %s '%s': %s!\n"
	func file (Unix.error_message code);
      raise exec  
    ;;
   
3. raise another exception

    exception MyUnixException;;
    try
     Unix.stat "/foo/bar"
    with
    | Unix.Unix_error (code, func, file) as exec ->
      Printf.fprintf stderr "Couldn't %s '%s': %s!\n"
	func file (Unix.error_message code);
      raise MyUnixException
    ;;


In case you get an error like 

      Reference to undefined global `Unix'

you have to built a toplevel containing the unix module:

  /usr/local/ocaml-3.01/bin/ocamlmktop -o mytop unix.cma


Bye,

Hendrik
-------------------
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:[~2002-04-16 13:56 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-04-15 20:51 Oliver Bandel
2002-04-15 22:59 ` Shawn Wagner
2002-04-16 13:04   ` Oliver Bandel
2002-04-16 13:22     ` Remi VANICAT
2002-04-16 13:56     ` Hendrik Tews [this message]

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=15548.11679.501664.154023@gargle.gargle.HOWL \
    --to=tews@tcs.inf.tu-dresden.de \
    --cc=caml-list@inria.fr \
    --cc=oliver@first.in-berlin.de \
    /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).