La funzione error()
Fa parte della sezione Logica e flusso del percorso Lua di Coddy. Lezione 32 di 54.
A volte il tuo codice deve fermarsi immediatamente quando qualcosa va storto. Lua fornisce la funzione error() per gestire queste situazioni generando un errore e interrompendo l'esecuzione dello script.
La funzione error() accetta un messaggio come argomento e interrompe il programma, mostrando quel messaggio per indicare cosa è andato storto. Ecco la sintassi di base:
error("Something went wrong!")Questo è particolarmente utile per convalidare gli input di una funzione. Per esempio, se una funzione si aspetta un numero positivo ma ne riceve uno negativo, puoi usare error() per impedire l'esecuzione successiva:
function calculateSquareRoot(num)
if num < 0 then
error("Cannot calculate square root of a negative number")
end
return math.sqrt(num)
endQuando viene chiamata error(), il programma si interrompe immediatamente in quel punto e visualizza il messaggio di errore personalizzato. Questo ti aiuta a individuare i problemi tempestivamente e a comunicare chiaramente cosa è andato storto, rendendo il codice più affidabile e più facile da correggere.
error() serve per gli errori effettivi, ad esempio quando una funzione viene chiamata con un tipo di valore errato. Per gli insuccessi che chi chiama dovrebbe aspettarsi, come un elemento mancante o un input utente non valido, il codice Lua di solito non genera un errore. Invece, la funzione restituisce nil e un messaggio, e chi la chiama controlla il risultato:
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) -- Nessun oggetto chiamato sword
endAnche le funzioni proprie di Lua funzionano allo stesso modo: tonumber("abc") restituisce nil e io.open() restituisce nil e un messaggio quando non riesce ad aprire un file.
Provalo tu
Questa lezione non include una sfida di codice.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Iterazione avanzata delle tabelle
Iterare con pairs()Iterare con ipairs()pairs() vs. ipairs()Riepilogo - Scheda del personaggio2Altre funzioni della libreria table
table.concat()Costruzione di tabelle e unpack()table.sort()Ordinamento personalizzato con funzioniRiepilogo - Tabellone dei punteggi più altiEsercitati da solo: Compilatore Lua online