xpcall
Lua function xpcall Summary Calls a function with a custom error handler Prototype `ok, result = xpcall (f, err)` Description `Calls function f with err as the custom error handler. If an error occurs in f it is caught and the error-handler 'err' is called. Then xpcall returns false, and whatever the error handler returned. If there is no error in f, then xpcall returns true, followed by the function results from f. Note that the supplied error function is called before the stack is unwound (in case of error) so this is a good time to find what functions were on the stack leading up to the error. In the example below we use the debug.traceback function, which shows a stack trace as at the time of the error.
    function f ()
      return "a" + 2  -- will cause error
    end -- f

    function err (x)
      print ("err called", x)
      return "oh no!"
    end -- err

    print (xpcall (f, err))

     -->

    err called [string "Immediate"]:2: attempt to perform arithmetic on a string value
    false oh no!

    function f2 ()
      return 2 + 2
    end -- f

    print (xpcall (f, err))  --> true 4

    function f ()
    return "a" + 2
    end -- f

    print (xpcall (f, debug.traceback))

     -->

    false   stdin:2: attempt to perform arithmetic on a string value
    stack traceback:
            stdin:2: in function `f'
            [C]: in function `xpcall'
            stdin:1: in main chunk
            [C]: ?
` See Also ... Topics Lua base functions Lua bc (big number) functions Lua bit manipulation functions Lua coroutine functions Lua debug functions Lua io functions Lua math functions Lua os functions Lua package functions Lua PCRE regular expression functions Lua script extensions Lua string functions Lua table functions Lua utilities Scripting Lua functions assert (Asserts that condition is not nil and not false) collectgarbage (Collects garbage) dofile (Executes a Lua file) error (Raises an error message) gcinfo (Returns amount of dynamic memory in use) getfenv (Returns the current environment table) getmetatable (Returns the metatable for the object) ipairs (Iterates over a numerically keyed table) load (Loads a chunk by calling a function repeatedly) loadfile (Loads a Lua file and parses it) loadlib (Loads a DLL (obsolete in Lua 5.1)) loadstring (Compiles a string of Lua code) module (Creates a Lua module) next (Returns next key / value pair in a table) pairs (Traverse all items in a table) pcall (Calls a function in protected mode) print (Prints its arguments) rawequal (Compares two values for equality without invoking metamethods) rawget (Gets the value of a table item without invoking metamethods) rawset (Sets the value of a table item without invoking metamethods) require (Loads a module) select (Returns items in a list) setfenv (Sets a function's environment) setmetatable (Sets the metatable for a table) tonumber (Converts a string (of the given base) to a number) tostring (Converts its argument to a string) type (Returns the type of a variable) unpack (Unpacks a table into individual items) (Help topic: lua=xpcall) Documentation contents page