我如何检查这个函数是否失败(我应该检查它吗)?



我看到在LuaCrypto下我们有这个函数crypto.digest.new(dtype),并且我看到了关于该函数的以下解释:

crypto.digest.new(dtype)使用dtype指定的算法创建一个新的消息摘要对象

当我调用这个函数时,我是否应该检查它是否失败?我怎么知道呢?我在哪里可以看到这个函数返回的参数是什么?我如何检查返回的参数?

我知道这个函数返回的是我想要的值,但我不确定是否需要检查函数是否失败。

LuaCrypto Manual说明:

错误处理

函数在传递已知的无效参数时抛出错误,例如不存在的digest/cipher和太大的密钥或初始化向量。否则,函数返回nil,如果运行时错误,例如启用填充时输入大小不正确,则返回error。

知道了这一点,我们就可以使用pcall来捕获错误。

local success, object = pcall(crypto.digest.new(dtype))
if success and object then
-- no error occurred. `object` is the new message digest object 
for line in io.lines(some_file) do 
object:update(line)
end
local md5_file = object:final()
else
-- error occurred, `object` is the error information, if any is provided.
end

那么你应该检查函数是否正确完成完全取决于你如何设计你的程序。您没有提供任何代码来显示您如何使用或计划使用该函数,所以"我应该检查它吗?"是我不能回答的问题。


一些建议阅读Lua错误处理:

Lua 5.4参考手册:2.3 -错误处理

在Lua编程:8.4 -错误处理和异常

相关内容

最新更新