lua-users home
lua-l archive

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


On 3 November 2011 13:05, Ashwin Hirschi <lua-l@reflexis.com> wrote:
>
> Looking at the "error" function in Lua 5.2 beta, would it not be more useful
> (and friendly) if the traceback that's being generated would also take the
> "level" parameter into account?
>
> For example, this scripted scenario:
>
>        -- public primitive
>        function go4it(str)
>                down1(str)
>        end
>
>        -- consider these "internal"
>        function down1(str)
>                down2(str)
>        end
>
>        function down2(str)
>                if type(str) ~= "string" then
>                        error("strings only, please!", 4)
>                end
>        end
>
>        -- some (separate) client/user's code
>        print "starting..."
>        go4it(1000)
>        print "done."
>
>
> prints the "starting..." message and then the following alert:
>
>        errorlevel.lua:20: strings only, please!
>        stack traceback:
>                [C]: in function 'error'
>                errorlevel.lua:14: in function 'down2'
>                errorlevel.lua:9: in function 'down1'
>                errorlevel.lua:4: in function 'go4it'
>                errorlevel.lua:20: in main chunk
>                [C]: in ?
>
>
> The very first line correctly identifies the line (20) in the source code
> I'd like it to (and indicated when calling error with level 4).
>
> However, the traceback begins with 4 "extra" lines that'll likely confuse
> the person who's only seeing the client code... (while also exposing
> internal/implementation details I'd like to hide!).
>
> Please note that in "real life" the client code is much more complicated and
> often nested. So, having a traceback definitely does make sense.
>
> I'd just like it to be a bit more to the point when I've indicated as much
> to the error function. Isn't that the function of error's level parameter in
> the first place?
>
> What are your thoughts?
>
> Ashwin.
>
>
Why not overwrite the traceback function and strip the message down to
the information you want to reveal? Personally when I ask for a
traceback (which is what error is doing) I want to see the traceback
:)

Liam