[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: suggesting change: lua_pcall error handlers to return multiple values
- From: Asko Kauppi <askok@...>
- Date: Fri, 23 Jan 2009 00:09:48 +0200
Just to mention, I was able to bypass this limitation in Lane (2.0.3)
by placing the stack trace via registry from error handler to the
lua_pcall caller.
Lanes 2.0.3 will be able to provide this API to users:
[...]|[ nil, err, stack_tbl ]= lane_h:join( [timeout_secs] )
stack_tbl is an array of "<filename>:<line>" strings, describing
where the error was thrown. Use table.concat() to format it to your
liking (or just ignore it).
The stack_tbl is the new thing. Seems one was not able to get a stack
trace of what had happened within a lane, if it errorred. Now, one can.
-asko
Asko Kauppi kirjoitti 22.1.2009 kello 21:30:
In regards to the discussion concerning non-string error values,
there is a certain detail of Lua that in my opinion would deserve a
change.
The 'lua_pcall' function allows an error handler, which can grab the
error message and modify it accordingly (normally, to add stack
trace). This implies that the error "message" (as it is called in
documentation) is a string. Non-string errors cannot be modified to
have a stack trace.
Why not allow an error handler return multiple values? What I have
in mind is two (error value + stack trace string). Currently,
'lua_pcall' silently eats up any additional return values from the
error handler.
-asko