Menu
CoddyTech

Функция error()

Часть раздела Логика и управление потоком путешествия по Lua на Coddy. Урок 32 из 54.

Иногда код должен немедленно остановиться, если что-то пошло не так. Lua предоставляет функцию error(), чтобы обрабатывать такие ситуации: она вызывает ошибку и останавливает выполнение скрипта.

Функция error() принимает сообщение в качестве аргумента и останавливает программу, отображая это сообщение, чтобы указать, что пошло не так. Вот базовый синтаксис:

error("Something went wrong!")

Это особенно полезно при проверке входных данных функции. Например, если функция ожидает положительное число, но получает отрицательное, можно использовать error(), чтобы предотвратить дальнейшее выполнение:

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

Когда вызывается error(), программа немедленно останавливается в этом месте и отображает ваше пользовательское сообщение об ошибке. Это помогает своевременно обнаруживать проблемы и ясно сообщать, что пошло не так, делая ваш код надёжнее и упрощая его отладку.

error() предназначена для настоящих ошибок, например когда функцию вызывают со значением неподходящего типа. При сбоях, которых вызывающий код должен ожидать, например при отсутствии элемента или некорректном вводе пользователя, код Lua обычно не вызывает ошибку. Вместо этого функция возвращает nil и сообщение, а вызывающий код проверяет результат:

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)  -- Нет предмета с названием sword
end

Собственные функции Lua работают так же: tonumber("abc") возвращает nil, а io.open() возвращает nil и сообщение, если не может открыть файл.

Попробуйте сами

В этом уроке нет задания по программированию.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Lua