我一直在查看我们的一个应用程序中的一些代码,如下所示:
catch (AggregateException ae)
{
this._logger.Log(ae.Flatten().InnerException.ToString(), Category.Exception, Priority.High);
}
我的问题是这个。我知道AggregateException.Flatten()
做了什么,我知道AggregateException.Flatten().InnerExceptions
代表什么。但是,AggregateException.Flatten().InnerException
(单个)代表什么?
答案 0 :(得分:37)
它只是原始异常中非聚合异常的一个。例如,如果您有一个初始AggregateException
:
AggregateException
AggregateException
IOException("x")
IOException("y")
IOException("z")
然后,展开结果的InnerException
将显示为IOException("x")
,IOException("y")
或IOException("z")
。我不相信哪个会有任何保证。 (我相信目前的行为会给出“z”版本......)它将是展平版本InnerExceptions
中的第一个,但应该被视为联盟所有原始非AggregateExceptions的em>,没有保证订单。
基本上InnerException
对AggregateException
并不十分有用。记录所有 InnerExceptions
...或者只是在顶级异常上调用ToString()
会更有用,这将保留所有结构... < / p>