C#:
Запись в стандартный поток ошибок
Как это сделать:
В C#, для записи в stderr используйте Console.Error.WriteLine()
. Это похоже на Console.WriteLine()
, только нацелено на поток ошибок.
using System;
class Program
{
static void Main()
{
Console.WriteLine("Сообщение стандартного вывода."); // Переходит в stdout
Console.Error.WriteLine("Сообщение об ошибке!"); // Переходит в stderr
}
}
Пример вывода, когда всё хорошо:
Сообщение стандартного вывода.
Но, если что-то не так, вы увидите:
Сообщение стандартного вывода.
Сообщение об ошибке!
Сообщение об ошибке появляется в консоли или может быть перенаправлено в файл.
Подробнее
Исторически, разделение stdout и stderr восходит к системам Unix, где это позволяло чистую обработку данных и обработку ошибок. В C# (и .NET в целом), Console.Out
представляет stdout, в то время как Console.Error
представляет stderr.
Вы можете перенаправлять оба потока, используя Console.SetOut()
и Console.SetError()
. Потоки, такие как FileStream
или StringWriter
, могут перехватывать вывод для ведения журнала. Это критически важно в сценариях, когда сообщения об ошибках не должны смешиваться с обычными данными, например, когда stdout направляется в другую программу.