c#中最内部的异常
本文关键字:异常 最内部 | 更新日期: 2023-09-27 18:21:24
有没有一种方法可以在不使用的情况下获得最内部的异常
while (e.InnerException != null) e = e.InnerException;
我在找类似e.MostInnerException
的东西。
要扩展Hans-Kesting的评论,扩展方法可能会派上用场:
public static Exception GetInnerMostException(this Exception e)
{
if (e == null)
return null;
while (e.InnerException != null)
e = e.InnerException;
return e;
}
这里有另一个不同的答案:您可以创建一个枚举器。
带
public static IEnumerable<Exception> EnumerateInnerExceptions(this Exception ex)
{
while (ex.InnerException != null)
{
yield return ex.InnerException;
ex = ex.InnerException;
}
}
你可以做
try
{
throw new Exception("1", new Exception("2", new Exception("3", new Exception("4"))));
}
catch (Exception ex)
{
foreach (var ie in ex.EnumerateInnerExceptions())
{
Console.WriteLine(ie.Message);
}
}
因此,从技术上讲,您不再以可见的方式使用while循环:)