Browse thread
[Caml-list] Catching errors (Unix-Module)
-
Oliver Bandel
-
Shawn Wagner
-
Oliver Bandel
- Remi VANICAT
- Hendrik Tews
-
Oliver Bandel
-
Shawn Wagner
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Remi VANICAT <vanicat@l...> |
| Subject: | Re: [Caml-list] Catching errors (Unix-Module) |
Oliver Bandel <oliver@first.in-berlin.de> writes:
> Hello,
>
> On Mon, 15 Apr 2002, Shawn Wagner wrote:
>
> > try
> > 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)
>
>
> OK, let's try it:
> ============================================
> oliver@first:/home/oliver > unix-top
> Objective Caml version 3.01
>
> #
> try
> 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)
>
> ;;
> Characters 74-161:
> This expression has type unit but is here used with type Unix.stats
Your expression have a type, an which ever case happen, it must return
a value of the same type (here Unix.stats), then Printf.fprintf
doesn't return something of type Unix.stats, an so this code doesn't
work.
Something like :
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
will work, as
try
Unix.stat "/foo/bar"
with
| Unix.Unix_error (code, func, file) as exn ->
Printf.fprintf stderr "Couldn't %s '%s': %s!\n"
func file (Unix.error_message code)
raise exn
(but in the latter case, the exception is reraised after the message
have been printed, it may not be what you want).
--
Rémi Vanicat
vanicat@labri.u-bordeaux.fr
http://dept-info.labri.u-bordeaux.fr/~vanicat
-------------------
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