On Jan 29, 2008 2:49 AM, James Porter <
porterj@alum.rit.edu> wrote:
Hu Qiwei wrote:
> Traditional pcall() and xpcall() behavior is intact. You can nest
> pcall() and try..catch as you want.
> The difference is, you can call coroutine.yield() (or lua_yield in C)
> in try..catch block. The implementation
> is platform independent. It uses setjmp...longjmp mechanism so it may
> not be quite compatible with
> C++.
A while back, I made a patch to Lua to implement full C++ exception
handling, primarily to ensure that exceptions passing through the Lua
state don't put it in an inconsistent, well, state. At the time, I
designed it to catch std::exceptions in pcalls and turn them into Lua
errors, but I think it would be preferable to have try/catch available
for things like that.
I'm not sure how likely it is that my exception-handling changes will
get rolled into Lua proper, but I think these two patches would benefit
from being merged into a single, more thorough patch.
If there's interest, I'll post my patch again, though I want to make a
few small changes to it first.
- Jim