AggregateException AggregateException AggregateException AggregateException Class

Определение

Представляет одну или несколько ошибок, происходящих во время выполнения приложения.Represents one or more errors that occur during application execution.

public ref class AggregateException : Exception
[System.Serializable]
public class AggregateException : Exception
type AggregateException = class
    inherit Exception
Public Class AggregateException
Inherits Exception
Наследование
AggregateExceptionAggregateExceptionAggregateExceptionAggregateException
Атрибуты

Примеры

В следующем примере перехватывается AggregateException исключение и Handle вызывается метод для управления каждым исключением, которое оно содержит.The following example catches the AggregateException exception and calls the Handle method to handle each exception it contains. Компиляция и запуск примера с первой task1 переменной должны привести к AggregateException созданию объекта, содержащего UnauthorizedAccessException исключение.Compiling and running the example with the first task1 variable should result in an AggregateException object that contains an UnauthorizedAccessException exception. Закомментируйте эту строку, раскомментируя вторую task1 переменную, выполнив компиляцию и выполнение примера, вы AggregateException создаете объект, содержащий IndexOutOfRangeException исключение.Commenting out that line, uncommenting the second task1 variable, and compiling and running the example produces an AggregateException object that contains an IndexOutOfRangeException exception.

using System;
using System.IO;
using System.Threading.Tasks;

class Example
{
   static async Task Main(string[] args)
   {
      // Get a folder path whose directories should throw an UnauthorizedAccessException.
      string path = Directory.GetParent(
                              Environment.GetFolderPath(
                              Environment.SpecialFolder.UserProfile)).FullName;

      // Use this line to throw UnauthorizedAccessException, which we handle.
      Task<string[]> task1 = Task<string[]>.Factory.StartNew(() => GetAllFiles(path));

      // Use this line to throw an exception that is not handled.
      // Task task1 = Task.Factory.StartNew(() => { throw new IndexOutOfRangeException(); } );
      try
      {
          await task1;
      }
      catch (UnauthorizedAccessException ae)
      { 
          Console.WriteLine("Caught unauthorized access exception-await behavior");
      }
      catch (AggregateException ae)
      {
          Console.WriteLine("Caught aggregate exception-Task.Wait behavior");
          ae.Handle((x) =>
          {
              if (x is UnauthorizedAccessException) // This we know how to handle.
              {
                  Console.WriteLine("You do not have permission to access all folders in this path.");
                  Console.WriteLine("See your network administrator or try another path.");
                  return true;
              }
              return false; // Let anything else stop the application.
          });
      }

      Console.WriteLine("task1 Status: {0}{1}", task1.IsCompleted ? "Completed," : "", 
                                                task1.Status);
   }
 
   static string[] GetAllFiles(string str)
   {
      // Should throw an UnauthorizedAccessException exception.
      return System.IO.Directory.GetFiles(str, "*.txt", System.IO.SearchOption.AllDirectories);
   }
}
// The example displays the following output if the file access task is run:
//       You do not have permission to access all folders in this path.
//       See your network administrator or try another path.
//       task1 Status: Completed,Faulted
// It displays the following output if the second task is run:
//       Unhandled Exception: System.AggregateException: One or more errors occurred. ---
//       > System.IndexOutOfRangeException: Index was outside the bounds of the array.
//          at Example.<Main>b__0()
//          at System.Threading.Tasks.Task.Execute()
//          --- End of inner exception stack trace ---
//          at System.AggregateException.Handle(Func`2 predicate)
//          at Example.Main(String[] args)
Imports System.IO
Imports System.Threading.Tasks

Module Example
    Sub Main()
        ' Get a folder path whose directories should throw an UnauthorizedAccessException.
        Dim path As String = Directory.GetParent(
                                       Environment.GetFolderPath(
                                       Environment.SpecialFolder.UserProfile)).FullName

        ' Use this line to throw UnauthorizedAccessException, which we handle.
        Dim task1 = Task(Of String()).Factory.StartNew(Function() GetAllFiles(path))

        ' Use this line to throw an exception that is not handled.
        ' Task task1 = Task.Factory.StartNew(Sub() Throw New IndexOutOfRangeException() )
        Try
            task1.Wait()
        Catch ae As AggregateException
            ae.Handle(Function(x)
                          If TypeOf (x) Is UnauthorizedAccessException Then ' This we know how to handle
                              Console.WriteLine("You do not have permission to access all folders in this path.")
                              Console.WriteLine("See your network administrator or try another path.")
                              Return True
                          Else
                              Return False ' Let anything else stop the application.
                          End If
                      End Function)
        End Try

      Console.WriteLine("task1 Status: {0}{1}", If(task1.IsCompleted, "Completed,", ""), 
                                                task1.Status)
    End Sub

    Function GetAllFiles(ByVal str As String) As String()
        ' Should throw an UnauthorizedAccessException exception. 
        Return System.IO.Directory.GetFiles(str, "*.txt", System.IO.SearchOption.AllDirectories)
    End Function
End Module

Комментарии

AggregateExceptionиспользуется для объединения нескольких сбоев в один объект исключения, который можно создать.AggregateException is used to consolidate multiple failures into a single, throwable exception object. Он широко используется в библиотеке параллельных задач (TPL) и Parallel LINQ (PLINQ).It is used extensively in the Task Parallel Library (TPL) and Parallel LINQ (PLINQ). Дополнительные сведения см. в статьях Обработка исключений и Практическое руководство. Обработка исключений в запросах PLINQ.For more information, see Exception Handling and How to: Handle Exceptions in a PLINQ Query. Дополнительные сведения см. в записи об исключениях статистической обработки в блоге .NET.For additional information, see the Aggregating Exceptions entry in the .NET Matters blog.

Конструкторы

AggregateException() AggregateException() AggregateException() AggregateException()

Инициализирует новый экземпляр класса AggregateException с системным сообщением, содержащим описание ошибки.Initializes a new instance of the AggregateException class with a system-supplied message that describes the error.

AggregateException(Exception[]) AggregateException(Exception[]) AggregateException(Exception[]) AggregateException(Exception[])

Инициализирует новый экземпляр класса AggregateException со ссылками на внутренние исключения, вызвавшие данное исключение.Initializes a new instance of the AggregateException class with references to the inner exceptions that are the cause of this exception.

AggregateException(IEnumerable<Exception>) AggregateException(IEnumerable<Exception>) AggregateException(IEnumerable<Exception>) AggregateException(IEnumerable<Exception>)

Инициализирует новый экземпляр класса AggregateException со ссылками на внутренние исключения, вызвавшие данное исключение.Initializes a new instance of the AggregateException class with references to the inner exceptions that are the cause of this exception.

AggregateException(SerializationInfo, StreamingContext) AggregateException(SerializationInfo, StreamingContext) AggregateException(SerializationInfo, StreamingContext) AggregateException(SerializationInfo, StreamingContext)

Инициализирует новый экземпляр класса AggregateException с сериализованными данными.Initializes a new instance of the AggregateException class with serialized data.

AggregateException(String) AggregateException(String) AggregateException(String) AggregateException(String)

Инициализирует новый экземпляр класса AggregateException с использованием заданного сообщения, содержащего описание ошибки.Initializes a new instance of the AggregateException class with a specified message that describes the error.

AggregateException(String, Exception) AggregateException(String, Exception) AggregateException(String, Exception) AggregateException(String, Exception)

Инициализирует новый экземпляр класса AggregateException указанным сообщением об ошибке и ссылкой на внутреннее исключение, вызвавшее данное исключение.Initializes a new instance of the AggregateException class with a specified error message and a reference to the inner exception that is the cause of this exception.

AggregateException(String, Exception[]) AggregateException(String, Exception[]) AggregateException(String, Exception[]) AggregateException(String, Exception[])

Инициализирует новый экземпляр класса AggregateException с заданным сообщением об ошибке и ссылками на внутренние исключения, вызвавшие данное исключение.Initializes a new instance of the AggregateException class with a specified error message and references to the inner exceptions that are the cause of this exception.

AggregateException(String, IEnumerable<Exception>) AggregateException(String, IEnumerable<Exception>) AggregateException(String, IEnumerable<Exception>) AggregateException(String, IEnumerable<Exception>)

Инициализирует новый экземпляр класса AggregateException с заданным сообщением об ошибке и ссылками на внутренние исключения, вызвавшие данное исключение.Initializes a new instance of the AggregateException class with a specified error message and references to the inner exceptions that are the cause of this exception.

Свойства

Data Data Data Data

Возвращает коллекцию пар ключ/значение, предоставляющие дополнительные сведения об исключении, определяемые пользователем.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Inherited from Exception)
HelpLink HelpLink HelpLink HelpLink

Получает или задает ссылку на файл справки, связанный с этим исключением.Gets or sets a link to the help file associated with this exception.

(Inherited from Exception)
HResult HResult HResult HResult

Возвращает или задает HRESULT — кодированное числовое значение, присвоенное определенному исключению.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Inherited from Exception)
InnerException InnerException InnerException InnerException

Возвращает экземпляр класса Exception, который вызвал текущее исключение.Gets the Exception instance that caused the current exception.

(Inherited from Exception)
InnerExceptions InnerExceptions InnerExceptions InnerExceptions

Получает доступную только для чтения коллекцию экземпляров Exception, вызывавших текущее исключение.Gets a read-only collection of the Exception instances that caused the current exception.

Message Message Message Message

Получает сообщение, описывающее исключение.Gets a message that describes the exception.

Source Source Source Source

Возвращает или задает имя приложения или объекта, вызывавшего ошибку.Gets or sets the name of the application or the object that causes the error.

(Inherited from Exception)
StackTrace StackTrace StackTrace StackTrace

Получает строковое представление непосредственных кадров в стеке вызова.Gets a string representation of the immediate frames on the call stack.

(Inherited from Exception)
TargetSite TargetSite TargetSite TargetSite

Возвращает метод, создавший текущее исключение.Gets the method that throws the current exception.

(Inherited from Exception)

Методы

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
Flatten() Flatten() Flatten() Flatten()

Объединяет экземпляры AggregateException в один новый экземпляр.Flattens an AggregateException instances into a single, new instance.

GetBaseException() GetBaseException() GetBaseException() GetBaseException()

Возвращает объект AggregateException, являющийся первопричиной данного исключения.Returns the AggregateException that is the root cause of this exception.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext)

Инициализирует новый экземпляр класса AggregateException с сериализованными данными.Initializes a new instance of the AggregateException class with serialized data.

GetType() GetType() GetType() GetType()

Возвращает тип среды выполнения текущего экземпляра.Gets the runtime type of the current instance.

(Inherited from Exception)
Handle(Func<Exception,Boolean>) Handle(Func<Exception,Boolean>) Handle(Func<Exception,Boolean>) Handle(Func<Exception,Boolean>)

Вызывает обработчик для каждого объекта Exception, содержащегося в данном объекте AggregateException.Invokes a handler on each Exception contained by this AggregateException.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Создает и возвращает строковое представление текущего AggregateException.Creates and returns a string representation of the current AggregateException.

События

SerializeObjectState SerializeObjectState SerializeObjectState SerializeObjectState

Возникает, когда исключение сериализовано для создания объекта состояния исключения, содержащего сериализованные данные об исключении.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Inherited from Exception)

Применяется к

Потокобезопасность

Все открытые и защищенные члены AggregateException являются потокобезопасными и могут использоваться одновременно из нескольких потоков.All public and protected members of AggregateException are thread-safe and may be used concurrently from multiple threads.