Luaにおいてのpcallとは

pcallとはprotected callの略称で関数を保護モードで呼び出す機能のこと。pcall内部で呼び出した関数で発生したいかなるエラーも外側に伝播しない。そして関数が成功したかどうかの値と、成功した場合はその戻り値(ある場合)、失敗した場合はエラーメッセージを返す

Robloxでのpcallの用途

Robloxでプログラミングを行う場合、失敗する可能性のある関数に対してpcallを用いる。例えばData Storeを用いたデータの読み込み、書き込みを行う場合、通信環境や送った命令の個数によっては関数が失敗することがある。この失敗に対応するためにpcallで関数の実行結果を受け取り、失敗した場合はリトライやエラー表示など適切なハンドリングができるようにする。

使用例

local DataStoreService = game:GetService("DataStoreService")
local dummyStore = DataStoreService:GetDataStore("DummyStore")

-- pcallでデータのセーブを行う
local setSuccess, errorMessage = pcall(function()
    dummyStore:SetAsync("dummyKey", "dummyValue")
end)


-- セーブが失敗した場合はエラーメッセージの表示を行う
if not setSuccess then
	warn(errorMessage)
end