Menu
CoddyTech

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)
end

error()が呼び出されると、プログラムはその時点ですぐに停止し、独自のエラーメッセージを表示します。これにより、問題を早期に見つけ、何が問題だったのかを明確に伝えられるため、コードの信頼性が高まり、デバッグも容易になります。

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 というアイテムはありません
end

Luaの標準関数も同じように動作します。tonumber("abc")はnilを返し、io.open()はファイルを開けないときにnilとメッセージを返します。

自分で試してみよう

このレッスンにはコードチャレンジは含まれていません。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとプログラムの流れのすべてのレッスン

自分で練習してみよう: Luaオンラインコンパイラ