lua-users home
lua-l archive

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


`xpcall` and `lua_pcall[k]` can take a message handler function which
can replace or extend the original error message in any way. The message
handler receives the old error message as argument and returns the new
error message/value.


See the implementation of `luaL_traceback` in `lauxlib.c` for pointers.


Sorry, but this does not address the problem. All these methods receive strings that are already formatted to be human-readable.
For example you get:
"[string "print("hello world")..."]:70: attempt to perform arithmetic on global 'x' (a nil value)"

What would be useful is a struct with data similar to these (invented by me):

  error = LUA_ARITHMETIC_INVALID_OPERAND
  file =  "....."
  line =  70
  object = LUA_GLOBAL_VARIABLE
  objectname = "x"
  objecttype = LUA_TNIL

This way the program could manage an error in more sophisticated ways, or format an error string in whatever is more appropriate for the application. With strings you should do an heavy parsing, and know all the possible generated strings, and hope they don't change at every revision.

Bye
Michele