在lua中覆盖断言

时间:2014-03-11 13:08:41

标签: lua cgi assert

我的设置板使用lighttpd为电路板提供Web UI。 它使用lua和JS来绘制逻辑。

我所看到的是如果我输入一个URL为" IPofboard / somejunkhere&#34 ;;正确投掷" 404未找到" 但是当我开火" IPofboard / somejunk.lp" (这是一些垃圾lua文件);它会产生一个"断言"找不到文件的错误。多数民众赞成如何工作。

但我想修改/覆盖此断言以显示相同的自定义消息,因为" 404未找到" 任何想法?

我是lua的新手。它甚至可行吗?

2 个答案:

答案 0 :(得分:2)

正如lhf提到的,重新定义Lua中的任何函数都很容易,但我认为这可能不是你需要的。问题是你做完

之后
local origAssert = assert
assert = function(message) 
    do something (possibly using origAssert)
end

然后每个使用assert的函数调用都将使用你的新断言函数,这可能不是你想要的。相反,你可以在" protected"中调用你的功能。 mode:这会将断言捕获为错误消息,然后您可以决定要做什么。例如,

ok, ret1, ret2 = pcall(yourFunction, arg1)
if not ok then 
    do something, possibly print ret1 (the error message)
end

如果您需要一个进行初始化的模块,那么同样如此:

ok, module = pcall(require, yourModuleName)
if not ok then 
    print("ERROR:", module) -- if not ok then module is err message
end

答案 1 :(得分:0)

我不熟悉lighttpd如何嵌入Lua,但在Lua中,您可以重新定义任何内容,包括标准Lua库中的函数,例如assert