C# 获取所有异常消息,包括C中的InnerException#
如何轻松获取所有异常消息(包括C#中的InnerExceptions)以输出到控制台或日志记录,例如?最简单的方法是编写递归函数: 例如: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
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