我一直在研究我们的一个应用程序中的一些代码,如下所示:
catch (AggregateException ae)
{
this._logger.Log(ae.Flatten().InnerException.ToString(), Category.Exception, Priority.High);
}我的问题是。我知道AggregateException.Flatten()是做什么的,也知道AggregateException.Flatten().InnerExceptions代表什么。然而,AggregateException.Flatten().InnerException (single)代表什么?
发布于 2012-11-27 02:27:24
它只是原始异常中的一个非AggregateException。例如,如果您的初始AggregateException为:
AggregateException
AggregateException
IOException("x")
IOException("y")
IOException("z")然后,平面化结果的InnerException将显示为IOException("x")、IOException("y")或IOException("z")。我不相信会有任何关于它的保证。(我相信目前的行为会给出"z“版本...)它将是扁平化版本上的第一个InnerExceptions,但它应该被视为所有原始非AggregateException的联合,没有保证顺序。
基本上,对于AggregateException来说,InnerException并不是特别有用。记录所有的InnerExceptions会更有用……或者只是在顶级异常上调用ToString(),这将保留所有的结构...
https://stackoverflow.com/questions/13570855
复制相似问题