Lua - 需要回退/错误处理



我目前正在运行不同发行版的各种Linux机器上使用awesome窗口管理器。所有机器都使用相同的(lua)配置文件。

一些机器安装了lua文件系统(lfs),而另一些则没有。我的配置最好使用 lfs ,但如果未安装,我想提供一个替代(次优)回退例程。

这是我的问题

,很简单:
  • 我将如何捕获require(lfs)语句引发的错误?
require

是一个神奇的函数。这是一个与Lua中的任何其他功能一样的功能。它使用 Lua 的标准错误信号工具发出错误信号。

因此,您可以从require中捕获错误,就像在Lua中执行任何其他功能一样。也就是说,你用pcall包裹它:

local status, lfs = pcall(require, "lfs")
if(status) then
    --lfs exists, so use it.
end

事实上,你可以制作自己的prequire函数来加载任何东西:

function prequire(...)
    local status, lib = pcall(require, ...)
    if(status) then return lib end
    --Library failed to load, so perhaps return `nil` or something?
    return nil
end
local lfs = prequire("lfs")
if(lfs) then
    --use lfs.
end

相关内容

  • 没有找到相关文章

最新更新