lua-users home
lua-l archive

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

On Sun, Mar 13, 2011 at 8:38 AM, GrayFace <> wrote:
> [...] I need a way to get the current error function, that is, the one passed
> to the last lua_pcall
> [...] I think this "geterrfunc" should be a part of standard debug library
> and also part of C API.

I made a similar comment in my complaint about how tracebacks work
[1].  Part of the complaint boils down to the failed expectation that
any code of the form


can be safely (with zero side-effects) refactored into

  local ok, err = pcall(f, ...)
  if not ok then error(err) end

Here's a typical use case:

  function g(callback)
    local file ='data.txt') -- allocate resource
    . . .
    local ok, err = pcall(callback) -- invoke user callback
    . . .
    file:close()  -- release resource prior to error propagation
    if not ok then error(err) end -- propagate