AggregateException Classe

Définition

Représente une ou plusieurs erreurs qui se produisent pendant l'exécution de l'application.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
Héritage
AggregateException
Attributs

Exemples

L’exemple suivant intercepte AggregateException l’exception et appelle Handle la méthode pour gérer chaque exception qu’elle contient.The following example catches the AggregateException exception and calls the Handle method to handle each exception it contains. La compilation et l’exécution de l’exemple task1 avec la première variable doivent AggregateException aboutir à un UnauthorizedAccessException objet qui contient une exception.Compiling and running the example with the first task1 variable should result in an AggregateException object that contains an UnauthorizedAccessException exception. Commentez cette ligne, supprimez les commentaires de la task1 deuxième variable, et la compilation et l’exécution de AggregateException l’exemple produit un IndexOutOfRangeException objet qui contient une exception.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

Remarques

AggregateExceptionest utilisé pour consolider plusieurs échecs dans un objet exception unique et levant.AggregateException is used to consolidate multiple failures into a single, throwable exception object. Elle est largement utilisée dans la bibliothèque parallèle de tâches (TPL) et parallèles LINQ (PLINQ).It is used extensively in the Task Parallel Library (TPL) and Parallel LINQ (PLINQ). Pour plus d’informations, consultez Gestion des exceptions et Comment gérer des exceptions dans une requête PLINQ.For more information, see Exception Handling and How to: Handle Exceptions in a PLINQ Query. Pour plus d’informations, consultez l’entrée Aggregation exceptions dans le blog .net Matts.For additional information, see the Aggregating Exceptions entry in the .NET Matters blog.

Constructeurs

AggregateException()

Initialise une nouvelle instance de la classe AggregateException avec un message système qui décrit l'erreur.Initializes a new instance of the AggregateException class with a system-supplied message that describes the error.

AggregateException(Exception[])

Initialise une nouvelle instance de la classe AggregateException avec des références aux exceptions internes qui sont la cause de cette exception.Initializes a new instance of the AggregateException class with references to the inner exceptions that are the cause of this exception.

AggregateException(IEnumerable<Exception>)

Initialise une nouvelle instance de la classe AggregateException avec des références aux exceptions internes qui sont la cause de cette exception.Initializes a new instance of the AggregateException class with references to the inner exceptions that are the cause of this exception.

AggregateException(SerializationInfo, StreamingContext)

Initialise une nouvelle instance de la classe AggregateException avec des données sérialisées.Initializes a new instance of the AggregateException class with serialized data.

AggregateException(String)

Initialise une nouvelle instance de la classe AggregateException avec un message spécifié décrivant l'erreur.Initializes a new instance of the AggregateException class with a specified message that describes the error.

AggregateException(String, Exception)

Initialise une nouvelle instance de la classe AggregateException avec un message d'erreur spécifié et une référence à l'exception interne ayant provoqué cette exception.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[])

Initialise une nouvelle instance de la classe AggregateException avec un message d'erreur spécifié et des références aux exceptions internes qui sont la cause de cette exception.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>)

Initialise une nouvelle instance de la classe AggregateException avec un message d'erreur spécifié et des références aux exceptions internes qui sont la cause de cette exception.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.

Propriétés

Data

Obtient une collection de paires clé/valeur qui fournissent des informations supplémentaires définies par l’utilisateur sur l’exception.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Hérité de Exception)
HelpLink

Obtient ou définit un lien vers le fichier d'aide associé à cette exception.Gets or sets a link to the help file associated with this exception.

(Hérité de Exception)
HResult

Obtient ou définit HRESULT, valeur numérique codée qui est assignée à une exception spécifique.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Hérité de Exception)
InnerException

Obtient l'instance Exception qui a provoqué l'exception actuelle.Gets the Exception instance that caused the current exception.

(Hérité de Exception)
InnerExceptions

Obtient une collection en lecture seule des instances Exception qui ont provoqué l'exception actuelle.Gets a read-only collection of the Exception instances that caused the current exception.

Message

Obtient un message qui décrit l'exception.Gets a message that describes the exception.

Source

Obtient ou définit le nom de l'application ou de l'objet qui est à l'origine de l'erreur.Gets or sets the name of the application or the object that causes the error.

(Hérité de Exception)
StackTrace

Obtient une représentation sous forme de chaîne des frames immédiats sur la pile des appels.Gets a string representation of the immediate frames on the call stack.

(Hérité de Exception)
TargetSite

Obtient la méthode qui lève l'exception actuelle.Gets the method that throws the current exception.

(Hérité de Exception)

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.Determines whether the specified object is equal to the current object.

(Hérité de Object)
Flatten()

Aplatit des instances AggregateException en une nouvelle instance unique.Flattens an AggregateException instances into a single, new instance.

GetBaseException()

Retourne AggregateException qui est la cause première de cette exception.Returns the AggregateException that is the root cause of this exception.

GetHashCode()

Sert de fonction de hachage par défaut.Serves as the default hash function.

(Hérité de Object)
GetObjectData(SerializationInfo, StreamingContext)

Initialise une nouvelle instance de la classe AggregateException avec des données sérialisées.Initializes a new instance of the AggregateException class with serialized data.

GetType()

Obtient le type au moment de l'exécution de l'instance actuelle.Gets the runtime type of the current instance.

(Hérité de Exception)
Handle(Func<Exception,Boolean>)

Appelle un gestionnaire sur chaque Exception contenu par ce AggregateException.Invokes a handler on each Exception contained by this AggregateException.

MemberwiseClone()

Crée une copie superficielle du Object actuel.Creates a shallow copy of the current Object.

(Hérité de Object)
ToString()

Crée et retourne une chaîne représentant la valeur AggregateException actuelle.Creates and returns a string representation of the current AggregateException.

Événements

SerializeObjectState

Se produit quand une exception est sérialisée pour créer un objet d'état d'exception qui contient des données sérialisées concernant l'exception.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Hérité de Exception)

S’applique à

Cohérence de thread

Tous les membres publics et protégés de AggregateException sont thread-safe et peuvent être utilisés simultanément par plusieurs threads.All public and protected members of AggregateException are thread-safe and may be used concurrently from multiple threads.