error() 関数
CoddyのLuaジャーニー「ロジックとプログラムの流れ」セクションの一部。レッスン 32/54。
コードでは、何か問題が起きたときに、すぐに処理を停止する必要がある場合があります。Luaには、エラーを発生させてスクリプトの実行を停止することで、このような状況に対処するerror()関数が用意されています。
error()関数は引数としてメッセージを受け取り、そのメッセージを表示してプログラムを停止し、何が問題だったのかを示します。基本的な構文は次のとおりです。
error("Something went wrong!")これは、関数の入力を検証するときに特に便利です。たとえば、関数が正の数を期待しているのに負の数を受け取った場合は、error()を使ってそれ以降の実行を防げます。
function calculateSquareRoot(num)
if num < 0 then
error("Cannot calculate square root of a negative number")
end
return math.sqrt(num)
enderror()が呼び出されると、プログラムはその時点ですぐに停止し、独自のエラーメッセージを表示します。これにより、問題を早期に見つけ、何が問題だったのかを明確に伝えられるため、コードの信頼性が高まり、デバッグも容易になります。
error()は、関数に間違った種類の値を渡して呼び出すなど、実際の間違いに対して使います。項目が見つからない場合やユーザー入力が不正な場合など、呼び出し元が想定すべき失敗については、Luaのコードは通常エラーを発生させません。代わりに、関数はnilとメッセージを返し、呼び出し元が結果を確認します。
function findItem(inventory, name)
if inventory[name] == nil then
return nil, "No item called " .. name
end
return inventory[name]
end
local count, err = findItem({potion = 3}, "sword")
if count then
print("You have " .. count)
else
print(err) -- sword というアイテムはありません
endLuaの標準関数も同じように動作します。tonumber("abc")はnilを返し、io.open()はファイルを開けないときにnilとメッセージを返します。
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとプログラムの流れのすべてのレッスン
自分で練習してみよう: Luaオンラインコンパイラ