Menu
CoddyTech

Funkcja error()

Część sekcji Logika i przepływ programu ścieżki Lua w Coddy. Lekcja 32 z 54.

Czasami kod musi natychmiast się zatrzymać, gdy coś pójdzie nie tak. Lua udostępnia funkcję error(), która obsługuje takie sytuacje, zgłaszając błąd i zatrzymując wykonywanie skryptu.

Funkcja error() przyjmuje komunikat jako argument i zatrzymuje program, wyświetlając ten komunikat, aby wskazać, co poszło nie tak. Oto podstawowa składnia:

error("Something went wrong!")

Jest to szczególnie przydatne podczas sprawdzania argumentów funkcji. Na przykład, jeśli funkcja oczekuje liczby dodatniej, ale otrzymuje liczbę ujemną, możesz użyć error(), aby zapobiec dalszemu wykonywaniu:

function calculateSquareRoot(num)
    if num < 0 then
        error("Cannot calculate square root of a negative number")
    end
    return math.sqrt(num)
end

Gdy wywołasz error(), program natychmiast zatrzyma się w tym miejscu i wyświetli własny komunikat o błędzie. Dzięki temu możesz wcześnie wykrywać problemy i jasno informować, co poszło nie tak, co sprawia, że Twój kod jest bardziej niezawodny i łatwiejszy do debugowania.

error() służy do sygnalizowania rzeczywistych błędów, takich jak wywołanie funkcji z wartością niewłaściwego typu. W przypadku sytuacji, których wywołujący powinien się spodziewać, takich jak brakujący element lub nieprawidłowe dane wejściowe użytkownika, kod Lua zwykle nie zgłasza błędu. Zamiast tego funkcja zwraca nil i komunikat, a wywołujący sprawdza wynik:

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)  -- Nie ma przedmiotu o nazwie sword
end

Funkcje samego Lua działają tak samo: tonumber("abc") zwraca nil, a io.open() zwraca nil i komunikat, gdy nie może otworzyć pliku.

Spróbuj swoich sił

Ta lekcja nie zawiera wyzwania z kodem.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Lua online