调试System.AggregateException-即使在异步代码中也是如此
顾名思义,AggregateException用于在单个异常中对一个或多个异常进行批处理。在本文中,我将向您展示为什么会发生此异常,以及如何在C代码中调试它。
错误的产生和处理
让我们从强制一个产生新的AggregateException开始。这个异常在.NET的任务库中被大量使用,为什么选择一个包含任务的示例是一件轻而易举的事情:
Task task1 = Task.Factory.StartNew(() => { throw newArgumentException(); } );
Task task2= Task.Factory.StartNew(() => { throw newUnauthorizedAccessException(); } );try{
Task.WaitAll(task1, task2);
}catch(AggregateException ae)
{
}
从TEB到PEB再到SEH(二)
什么是SEH?
SEH( Structured Exception Handling , 结构化异常处理 )
结构化异常处理(SEH)是Windows操作系统提供的强大异常处理功能。而Visual C++中的__try{}/__finally{}和__try{}/__except{}结构本质上是对Windows提供的SEH的封装
关于System.Exception