Die error()-Funktion
Teil des Abschnitts Logik und Programmablauf der Lua-Journey von Coddy. Lektion 32 von 54.
Manchmal muss dein Code sofort anhalten, wenn etwas schiefgeht. Lua stellt die Funktion error() bereit, um solche Situationen zu behandeln, indem sie einen Fehler auslöst und die Skriptausführung anhält.
Die Funktion error() erhält eine Meldung als Argument und hält das Programm an. Dabei zeigt sie diese Meldung an, um darauf hinzuweisen, was schiefgelaufen ist. Hier ist die grundlegende Syntax:
error("Something went wrong!")Dies ist besonders nützlich, wenn du Funktionseingaben überprüfst. Wenn eine Funktion beispielsweise eine positive Zahl erwartet, aber eine negative erhält, kannst du error() verwenden, um die weitere Ausführung zu verhindern:
function calculateSquareRoot(num)
if num < 0 then
error("Cannot calculate square root of a negative number")
end
return math.sqrt(num)
endWenn error() aufgerufen wird, stoppt das Programm an dieser Stelle sofort und zeigt deine benutzerdefinierte Fehlermeldung an. So kannst du Probleme frühzeitig erkennen und klar mitteilen, was schiefgelaufen ist. Dadurch wird dein Code zuverlässiger und lässt sich leichter debuggen.
error() ist für echte Fehler gedacht, etwa wenn eine Funktion mit einem Wert des falschen Typs aufgerufen wird. Bei Fehlern, mit denen ein Aufrufer rechnen sollte, wie einem fehlenden Element oder einer ungültigen Benutzereingabe, löst Lua-Code normalerweise keinen Fehler aus. Stattdessen gibt die Funktion nil und eine Meldung zurück, und der Aufrufer prüft das Ergebnis:
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) -- Kein Gegenstand namens sword
endLuas eigene Funktionen funktionieren genauso: tonumber("abc") gibt nil zurück, und io.open() gibt nil und eine Meldung zurück, wenn eine Datei nicht geöffnet werden kann.
Probier es selbst
Diese Lektion enthält keine Programmieraufgabe.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik und Programmablauf
1Fortgeschrittene Tabelleniteration
Iterieren mit pairs()Iterieren mit ipairs()pairs() vs. ipairs()Zusammenfassung – Charakterbogen2Weitere Funktionen der Tabellenbibliothek
table.concat()Tabellenkonstruktion & unpack()table.sort()Eigene Sortierung mit FunktionenRückblick – Highscore-Tabelle3Fortgeschrittene Funktionskonzepte
Mehrere Werte zurückgebenVariadische Funktionen (...)Funktionen als Werte erster KlasseAnonyme FunktionenWas ist eine Closure?Rückblick – Einfacher Event-Handler6Fehlerbehandlung
Die error()-FunktionGeschützte Aufrufe mit pcall()Zusammenfassung – Sichere DivisionÜbe selbstständig: Online-Lua-Compiler