Запись в стандартный поток ошибок

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 справляется с этим.

Смотрите также

Погрузитесь глубже или получите дополнительный контекст: