在lua中覆盖断言



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

我看到的是如果我输入一个URL为"IPofboard/somejunkhere";它正确地抛出"404未找到"但当我解雇"ipoboard/一些垃圾"时。Lp"(这是一些垃圾lua文件);它会对未找到的文件产生"assert"错误。这就是lua的工作原理。

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

我是lua的新手。这可行吗?

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

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

则每个使用assert的函数调用都将使用新的assert函数,这可能不是您想要的。相反,您可以以"protected"模式调用函数:这会将断言作为错误消息捕获,然后您可以决定如何处理。例如

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

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

最新更新