Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] Catching errors (Unix-Module)
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ 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