lua-users home
lua-l archive

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



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.