xpcall
code:lua
xpcall(f,err)
table:
戻り値1 boolean 関数の成功
戻り値2 多値 or string 関数の戻り値 またはエラーメッセージ
使用例
1.
code:lua
local f
do
local i=0
f=function()
if(i==2)then
error("エラー")
end
print("success",i)
i=i+1
end
end
local function err(mes)
print(mes)
end
xpcall(f, err)
xpcall(f, err)
xpcall(f, err)
code:output
success 0
success 1
2.
code:lua
xpcall(function()
-- スクリプト本文
end,function(mes)
setfont("メイリオ",25)
obj.load("text",mes)
obj.draw()
end)
このようにするとスクリプト中のエラーをフレームバッファに表示でき,ユーザーに優しくなる.
注意点
xpcallでは,呼び出す関数に引数を渡すことができない.引数を渡したい場合はpcallで頑張る. code:lua
local function f(i)
if(i==2)then
error("error")
end
print("success",i)
end
local function err(mes)
print(mes)
end
local function myxpcall(f,err,...)
local ret={pcall(f,...)}
return true,unpack(ret,2)
else
end
end
myxpcall(f, err, 0)
myxpcall(f, err, 1)
myxpcall(f, err, 2)
関連項目