我写了以下事实。外部命令有时会抛出一个我想要捕获的错误。我找到了许多使用begin
... end
块来捕获错误的示例。不幸的是,这些都不涉及setcode do
... end
块。事实上,我找不到关于setcode
的任何参考。任何人都可以对此有所了解吗?
Facter.add(:docexists) do
setcode do
cryptdevice = File.read("/home/adam/.cryptdevice")
if `cryptsetup luksOpen --key-file /home/adam/klucz.bin #{cryptdevice} crypt-tmp`
tmp = `cryptsetup luksClose crypt-tmp`
true
else
false
end
end
end
答案 0 :(得分:2)
如果我理解正确,你会发错误
if `cryptsetup luksOpen --key-file /home/adam/klucz.bin #{cryptdevice} crypt-tmp`
线。那么begin-rescue-end
块应该可以工作:
Facter.add(:docexists) do
setcode do
begin
cryptdevice = File.read("/home/adam/.cryptdevice")
if `cryptsetup luksOpen --key-file /home/adam/klucz.bin #{cryptdevice} crypt-tmp`
tmp = `cryptsetup luksClose crypt-tmp`
true
else
false
end
rescue => e
# handle error
end
end
end