Browse thread
[Caml-list] C++ Throws
[
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: | Brian Hurt <bhurt@s...> |
| Subject: | Re: [Caml-list] C++ Throws |
On Fri, 27 Aug 2004, David McClain wrote:
> I now see that OCaml is not converting anything, per se... Apparently
> when the throw handler detects an unhandled condition it decides to
> call abort(), against which there is no defense.
I don't know what precisely is going on here, but Ocaml interfaces to C,
which doesn't know anything about exceptions. You might try something
like (sorry, I'm no C++ guru):
extern "C" value foo(value c);
value foo(value C) {
/* normal Ocaml wrapper code for C */
try {
/* exception throwing code for C++. */
}
with (Exception e) {
/* Translate the C++ exception to an Ocaml exception */
}
}
The big difference between a C++ function and C function is the name
mangling. I doubt Ocaml could find a C++ function for linking after it
was name mangled. So the extern "C" tells C++ to not namemangle the
function name.
There is no way I know of to determine what exceptions a function call
might throw.
> So there appears to be something relatively complex going on across the
> foreign function interface with OCaml and C. This override is what
> frustrates the attempts to create a generic C++ exception handler.
I think you also have a C/C++ interface problem (and yes, Virginia, they
do exist).
--
"Usenet is like a herd of performing elephants with diarrhea -- massive,
difficult to redirect, awe-inspiring, entertaining, and a source of
mind-boggling amounts of excrement when you least expect it."
- Gene Spafford
Brian
-------------------
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