Reputation: 1526
If luaL_load
function fails, then, according to the documentation (Lua5.1), the error message is pushed on the stack and can be retrieved with lua_tostring(L, -1)
, but if I want to print a customized error message, I don't think I can use lua_Debug
(because that is for active function). Is there any other way (other than parsing the string) to get the file, line number and what error occured ?
-- Thanks.
Upvotes: 2
Views: 2279
Reputation: 72312
The error code returned by luaL_loadfile
tells you what kind of error happened. You're mostly likely only interested in LUA_ERRSYNTAX
, in which case there is a detailed error message left on the stack. This is the only record of the error. If you need to reformat it, you need to parse it.
Upvotes: 3
Reputation: 442
During a luaL_load(), there is nothing techinally on the stack that is relavant to the loading of the script. No functions are performed or executed in the script. Its just a compilation step, returning a function that encapsulates the whole file or the error found during compilation.
If you get a function back, you execute this to actually run the script, which sounds like what you are really interested in. In which case you can use a lua_pcall() and provide an error handler. In your handler you would then have your expected stack trace available via lua_Debug.
Upvotes: 1