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)
endGdy 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
endFunkcje 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.
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
1Zaawansowane iterowanie po tabelach
Iterowanie za pomocą pairs()Iterowanie za pomocą ipairs()pairs() a ipairs()Powtórka — karta postaci2Więcej funkcji biblioteki table
table.concat()Tworzenie tabel i unpack()table.sort()Sortowanie niestandardowe za pomocą funkcjiPodsumowanie — tablica najlepszych wyników5Projekt: silnik tekstowej gry przygodowej
Konfiguracja projektu: pokójŁączenie pokoi3Zaawansowane koncepcje funkcji
Zwracanie wielu wartościFunkcje wariadyczne (...)Funkcje jako wartości pierwszej klasyFunkcje anonimoweCzym jest domknięcie?Podsumowanie — prosty obsługiwacz zdarzeń6Obsługa błędów
Funkcja error()Wywołania chronione za pomocą pcall()Podsumowanie — bezpieczne dzieleniePoćwicz samodzielnie: Kompilator Lua online