wenmo8 发布的文章

顾名思义,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)
{
}

System.AccessViolationException异常通常发生在非托管代码尝试从尚未分配的内存读取或写入内存时。

制造错误

捕捉异常并不像你想象的那么容易。让我们从一个简单处理System.AccessViolationException的示例开始。以下程序引发并捕获异常:

今天,我要向您介绍System.UnauthorizedAccessException。异常通常是由IO错误引起的,但其他问题(如安全限制)也可以利用此错误。我们一起挖进去!

制造错误

捕捉异常非常简单。让我们创建一个小程序来触发和捕获此错误。在编写代码之前,我将创建一个名为c:\temp\readonly.txt的文本文件。创建后,右键单击文件,选择属性并启用只读复选框。这会引起意外!,文件为只读。对于代码:

classProgram
{
static void Main(string[] args)
{
var path = "c:\\temp\\readonly.txt";try{
File.Delete(path);
}
catch(UnauthorizedAccessException e)
{
Console.WriteLine(e);
}
}
}

今天,我想帮跟踪并修复一个非常常见且非常著名的异常:System.IO.FileNotFoundException。承认!在所有情况下,此错误都是由于尝试访问不存在的文件所致。但是,实际上有多种情况可以触发此异常。你可能认为你知道关于这个例外的一切,但我打赌你还有一些东西要学。至少我在深入了解这篇文章的细节时做到了。请继续关注以了解全部情况。

文件类型未找到错误

让我们来探究这个错误的不同原因。FileNotFoundException上的Message属性提供了有关发生情况的提示。