Ok so it seems Printexc is not the way to go... Can you make sense out of this sentence in catch's documentation then?

"This function is deprecated: the runtime system is now able to print uncaught exceptions as precisely as Printexc.catch does"

In the toplevel, exceptions are printed in a sensible way, i.e. their arguments is printed as far as it can go respecting abstract types:

# type t = A | B;;
# exception Bla of t;;
# raise (Bla A);;
Exception: Bla A.

Also it honors my #install_printer when printing arguments.
If I compile the same code, I get:

Fatal error: exception Exc.Bla(0)

It seems there is a very ad-hoc, type-unaware exception handler in compiled code (byterun/printexc.c:caml_format_exception?) that can't be changed and I was hoping Printexc would do that for me. It seems not; so, no other way to change the global catcher?

Thanks,
    -m

Le 04/13/2012 11:18 AM, Gabriel Scherer a écrit :
It seems Printexc.register_printer affects the other Printexc.*
functions, not the way the toplevel itself (or the runtime system more
generally) handles uncaught exceptions.

# Printexc.register_printer begin function Not_found -> Some "hello" |
_ -> None end;;
- : unit = ()
# (fun () -> raise Not_found) ();;
Exception: Not_found.
# Printexc.print (fun () -> raise Not_found) ();;
Uncaught exception: hello
Exception: Not_found.


On Fri, Apr 13, 2012 at 11:12 AM, Matthias Puech <puech@cs.unibo.it> wrote:
Hello,

Is there a way to change printing of uncaught exceptions in the toplevel and
in (native/bytecode, 3.12) compiled code without wrapping the whole code in
a try ... with or in Printexc.catch?

Printexc.catch's documentation says it is deprecated and that the runtime
system should be able to print exceptions the way they were registered with
Printexc.register_printer, yet

# Printexc.register_printer begin function Not_found -> Some "hello" | _ ->
None end;;
# raise Not_found;;
Exception: Not_found.

(* I would expect it to respond [Exception: hello] *)

Do I miss something here?
Thanks in advance,
   -m

--
Caml-list mailing list.  Subscription management and archives:
https://sympa-roc.inria.fr/wws/info/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs