[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: clarifying refman when Lua API functions raise errors
- From: David Manura <dm.lua@...>
- Date: Sat, 10 Nov 2007 23:34:13 +0000 (UTC)
The Reference Manual indicates that the following functions raise
lua_next [-1, +(2|0), e]
lua_gc [-0, +0, e]
luaL_getmetafield [-0, +(0|1), e]
As far as I see, lua_next only raises an error if the key is invalid.
Am I right that that traversing a table by starting with nil and not
making any modification to the table (like in the example given in the
description of lua_next) ensures the key is valid so that the function
does not raise an error?
lua_gc is a more complicated function, but initially I don't see it
raising an error. Would that be if __gc raised? (which by convention
it should not).
luaL_getmetafield is defined in terms of six API functions. The only
one that raises an error is lua_pushstring, and it is a memory error
Are these intentional? I understand that the implementation can be
stricter than the specification, so the doc is not necessarily
incorrect, but lua_next and luaL_getmetafield do not call metamethods,
so it seems unusual for them to raise errors.
The reason I ask concerns the use of lua_next while ensuring exception
safety (zero side effects).