Lua:
Запись в стандартный поток ошибок
Как это сделать:
Lua общается с stderr через io.stderr
. Вот как вывести простое сообщение об ошибке:
io.stderr:write("Ошибка: Что-то пошло не так!\n")
Пример вывода в stderr:
Ошибка: Что-то пошло не так!
Можно усложнить и объединить это с обработкой ошибок:
if not file then
io.stderr:write("Ошибка: Файл не найден.\n")
os.exit(1) -- выход с ненулевым кодом завершения
end
Глубокое погружение
Давным-давно компьютеры получили два отдельных потока для вывода — stdout для основных данных, stderr для ошибок. Lua сохраняет эту конвенцию Unix. Иногда люди перенаправляют stdout (например, в файл), но хотят видеть ошибки на экране. Здесь на сцену выходит stderr.
Альтернативы? Некоторые записывают в файл журнала, используют библиотеку логирования или отправляют по сети. Но stderr — это низкозатратный способ для простых задач.
С точки зрения реализации, io.stderr
Lua — это дескриптор файла. Он похож на io.stdout
или io.stdin
, готов к использованию без хлопот. Под капотом, будь то текстовый файл или терминал, Lua не волнует — io.stderr
справляется с этим.
Смотрите также
Погрузитесь глубже или получите дополнительный контекст:
- Справочник по Lua 5.4: http://www.lua.org/manual/5.4/
- Философия Unix: https://en.wikipedia.org/wiki/Unix_philosophy
- Узнайте больше о
os.exit
: http://www.lua.org/pil/21.3.html - Обзор возможностей ввода-вывода в Lua: http://www.lua.org/pil/21.html