Menu
CoddyTech

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

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

Anche 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.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Lua online