lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


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