在Catch /try语句中捕获所有STDOUT/STDERR

本文关键字:STDOUT STDERR Catch try 语句 | 更新日期: 2023-09-27 18:05:16

在c#中,我有一个函数显示STDERR上的错误。我想捕获在父catch/try

中打印到STDERR的所有内容
bool status = true;
Console.WriteLine("Action status: ");
try {
    talkative_function();
} catch {
    Console.WriteLine("Error");
    status = false;
} 
if (status) Console.WriteLine("Ok");

我当前的输出是:

Action status:...System.Net.Sockets.SocketException (0x80004005): No connection could be made because the target machine actively refused it 127.0.0.1:1234
   at System.Net.Sockets.TcpClient.Connect(String hostname, Int32 port)
   at MyProject.MyClass.MyMethod()   Error

需要的输出是:

Action status: Error

如何实现?

在Catch /try语句中捕获所有STDOUT/STDERR

您可以使用以下

        Console.SetError(TextWriter.Null);
        bool status = true;
        Console.Write("Action status: ");
        try {
            talkative_function();
        } catch {
            Console.WriteLine("Error");
            status = false;
        }
        if (status) Console.WriteLine("Ok");

请注意,我还将Console.WriteLine("Action status: ");更改为Console.Write("Action status: ");,因此消息显示在一行中,因为您需要