Luau入門9:エラーで止まらないようにする(pcall)

初級Luau更新日:2026年11月13日Luauの型チェック済み

ひとことで言うと

データの保存のように失敗することがある処理は、pcall で包むと、エラーが起きてもスクリプト全体が止まらずに済みます。

この記事で使うAPI

DataStoreService

pcallの使い方

local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local coinStore = DataStoreService:GetDataStore("PlayerCoins")

Players.PlayerAdded:Connect(function(player)
	local success, coins = pcall(function()
		return coinStore:GetAsync(tostring(player.UserId))
	end)
	if success then
		print(player.Name .. " のコイン:" .. tostring(coins or 0))
	else
		warn("データを読み込めませんでした")
	end
end)

Players.PlayerRemoving:Connect(function(player)
	local success, err = pcall(function()
		coinStore:SetAsync(tostring(player.UserId), 100)
	end)
	if not success then
		warn("データを保存できませんでした:" .. tostring(err))
	end
end)

pcall(関数) は、関数を実行して「成功したか」と「結果(または失敗の理由)」の2つを返します。失敗したときは warn で出力に知らせ、ゲームは止めずに続けます。

pcallを使う場面

  • データの保存・読み込み(DataStoreService)
  • 通信をともなう処理(購入・ほかのサーバーとのやりとりなど)
執筆・動作確認:鈴木孝昌官公庁のWeb・システム開発を担当する現役プロジェクトマネージャー。沖縄マイクラ部 クロスウェーブで、ロブロックス(Roblox)・マインクラフト(マイクラ)・Scratchなどのプログラミングを指導。マイクラカップ沖縄代表チームを指導(第6回・第7回、第7回TBS賞)。
沖縄マイクラ部で、子どもたちにロブロックス(Roblox)やマインクラフト(マイクラ)のプログラミングを教えています。プロフィールと編集方針
Instagramで教室の様子を見る
noteで記事を読む