C# 获取所有异常消息,包括C中的InnerException#

C# 获取所有异常消息,包括C中的InnerException#,c#,exception,inner-exception,C#,Exception,Inner Exception,如何轻松获取所有异常消息(包括C#中的InnerExceptions)以输出到控制台或日志记录,例如?最简单的方法是编写递归函数: 例如: public static string ExceptionMessages(Exception ex) { if (ex.InnerException == null) { return ex.Message; } return ex.Message

如何轻松获取所有异常消息(包括C#中的InnerExceptions)以输出到控制台或日志记录,例如?

最简单的方法是编写递归函数:

例如:

    public static string ExceptionMessages(Exception ex)
    {
        if (ex.InnerException == null)
        {
            return ex.Message;
        }

        return ex.Message + "  " + ExceptionMessages(ex.InnerException);

    }

这将在单个字符串中输出所有消息。

通常您只需循环:

catch (Exception ex)
{
    while (ex != null)
    {
        Console.Error.WriteLine(ex.Message);
        ex = ex.InnerException;
    }
}

显示您尝试了什么以及您遇到了什么问题……例如,输出到控制台以进行日志记录?根据日志框架的不同,它们只接受一个异常,并递归地记录其内部异常。有点过于宽泛和基本的问题imho。这个问题的想法是做一些知识共享,因为我在寻找它的时候找不到一个简洁的答案,所以希望这个问题能让人们在未来更容易找到一个好的解决方案。这已经存在了:。没有必要重新发明那个轮子。有人能把它作为一个复制品关闭吗?@Sinatr在细节和背景之间有一个权衡;当存在大量内部异常时(XmlSerializer在这方面是个怪兽!),ToString()就太庞大了,只要查看
。消息
输出就会很快告诉您问题所在。这取决于上下文,这就是我要说的。是的,有时
ex.ToString()
将只是fne