Функция 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 и сообщение, если не может открыть файл.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутая итерация таблиц
Итерация с помощью pairs()Итерация с помощью ipairs()pairs() против ipairs()Повторение — Лист персонажа2Дополнительные функции библиотеки table
table.concat()Создание таблиц и unpack()table.sort()Пользовательская сортировка с помощью функцийИтоги — Таблица рекордовПотренируйтесь самостоятельно: Онлайн-компилятор Lua