[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Standardised exceptions & errors
- From: David Given <dg@...>
- Date: Sat, 07 Aug 2004 17:01:41 +0000
So I've got this program written partly in Lua with a C backend.
Stuff can go wrong at basically any stage. This means I need to raise
some sort of exception. I would really like these exceptions to be of a
standard type so that third-party code can understand it.
For example: say a function in my C backend runs out of memory. What do
I do? Currently I raise a string exception containing a text message
describing the problem. *However*, the Lua internals use a different
function that raises an error code... presumably so that other bits of
Lua can respond to it. Am I allowed to do this? If so, how?
There seems to be nothing in the documentation about what types
exceptions are. It just says that they can be of any type, and pretty
much leaves it at that (unless I've missed that section).
I also have a related problem: occasionally I need to forcibly terminate
the Lua interpreter on my embedded platform. What's the best way of
doing that? My current thought is to use a signal-based timer to execute
code every, say, second or so that checks a global variable. If set, the
signal handler longjmps up to the top level where lua_close() would be
called.
Will this clean up all Lua state correctly? Is there any risk on
non-signalsafe code such as this:
FILE* f = fopen(...);
// f leaks if a signal arrives here!
lua_pushuserdata(L, f);
If so, I'd have to come up with some other mechanism...
--
David Given
dg@cowlark.com