LUA_PCALL(3) | Library Functions Manual | LUA_PCALL(3) |
lua_pcall
— calls
a function in protected mode, function indicator [- (nargs + 1), + Pq
nresults|1 , -]
#include
<lua.h>
int
lua_pcall
(lua_State
*L, int nargs,
int nresults,
int errfunc);
lua_pcall
()
calls a function in protected mode.
Both nargs and
nresults have the same meaning as in
lua_call(3). If there are no errors during the call,
lua_pcall
behaves exactly like
lua_call(3). However, if there is any error,
lua_pcall
catches it, pushes a single value on the
stack (the error message), and returns an error code. Like
lua_call(3), lua_pcall
always
removes the function and its arguments from the stack.
If errfunc is 0, then the error
message returned on the stack is exactly the original error message.
Otherwise, errfunc is the stack index of an
error handler
function. (In the current implementation, this index cannot be a
pseudo-index.) In case of runtime errors, this function will be called with
the error message and its return value will be the message returned on the
stack by lua_pcall
.
Typically, the error handler function is used to add more debug
information to the error message, such as a stack traceback. Such
information cannot be gathered after the return of
lua_pcall
, since by then the stack has unwound.
The lua_pcall
function returns 0 in case
of success or one of the following error codes (defined in
<lua.h>
):
LUA_ERRRUN
:LUA_ERRMEM
:LUA_ERRERR
:Roberto Ierusalimschy, Luiz Henrique de Figueiredo, and Waldemar Celes, Lua 5.1 Reference Manual.
The lua_pcall
() manual page is based on
Lua Reference Manual 5.1 and was created by Sergey Bronnikov.
July 20, 2022 | Debian |