AggregateException Klasse

Definition

Stellt einen oder mehrere Fehler dar, die beim Ausführen einer Anwendung auftreten.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
Vererbung
AggregateException
Attribute

Beispiele

Im folgenden Beispiel wird die AggregateException -Ausnahme abgefangen und Handle die-Methode aufgerufen, um die einzelnen darin enthaltenen Ausnahmen zu verarbeiten.The following example catches the AggregateException exception and calls the Handle method to handle each exception it contains. Das Kompilieren und Ausführen des Beispiels mit der task1 ersten Variablen sollte zu einem AggregateException Objekt führen, das UnauthorizedAccessException eine Ausnahme enthält.Compiling and running the example with the first task1 variable should result in an AggregateException object that contains an UnauthorizedAccessException exception. Kommentieren Sie diese Zeile aus, und entkommentieren task1 Sie die zweite Variable. durch Kompilieren und Ausführen des AggregateException Beispiels wird ein Objekt IndexOutOfRangeException erzeugt, das eine Ausnahme enthält.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

Hinweise

AggregateExceptionwird verwendet, um mehrere Fehler in einem einzelnen, einschränier baren Ausnahme Objekt zu konsolidieren.AggregateException is used to consolidate multiple failures into a single, throwable exception object. Sie wird im Task Parallel Library (TPL) und Parallel LINQ (PLINQ)ausführlich verwendet.It is used extensively in the Task Parallel Library (TPL) and Parallel LINQ (PLINQ). Weitere Informationen finden Sie unter Ausnahmebehandlung und unter Vorgehensweise: Behandeln von Ausnahmen in einer PLINQ-Abfrage.For more information, see Exception Handling and How to: Handle Exceptions in a PLINQ Query. Weitere Informationen finden Sie im Eintrag Aggregations Ausnahmen im .NET Matters-Blog.For additional information, see the Aggregating Exceptions entry in the .NET Matters blog.

Konstruktoren

AggregateException()

Initialisiert eine neue Instanz der AggregateException-Klasse mit einer vom System generierten Meldung, die den Fehler beschreibt.Initializes a new instance of the AggregateException class with a system-supplied message that describes the error.

AggregateException(Exception[])

Initialisiert eine neue Instanz der AggregateException-Klasse mit Verweisen auf die inneren Ausnahmen, die diese Ausnahme ausgelöst haben.Initializes a new instance of the AggregateException class with references to the inner exceptions that are the cause of this exception.

AggregateException(IEnumerable<Exception>)

Initialisiert eine neue Instanz der AggregateException-Klasse mit Verweisen auf die inneren Ausnahmen, die diese Ausnahme ausgelöst haben.Initializes a new instance of the AggregateException class with references to the inner exceptions that are the cause of this exception.

AggregateException(SerializationInfo, StreamingContext)

Initialisiert eine neue Instanz der AggregateException-Klasse mit serialisierten Daten.Initializes a new instance of the AggregateException class with serialized data.

AggregateException(String)

Initialisiert eine neue Instanz der AggregateException-Klasse mit einer angegebenen Meldung, die den Fehler beschreibt.Initializes a new instance of the AggregateException class with a specified message that describes the error.

AggregateException(String, Exception)

Initialisiert eine neue Instanz der AggregateException-Klasse mit einer angegebenen Fehlermeldung und einem Verweis auf die innere Ausnahme, die diese Ausnahme ausgelöst hat.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[])

Initialisiert eine neue Instanz der AggregateException-Klasse mit einer angegebenen Fehlermeldung und Verweisen auf die inneren Ausnahmen, die diese Ausnahme verursacht haben.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>)

Initialisiert eine neue Instanz der AggregateException-Klasse mit einer angegebenen Fehlermeldung und Verweisen auf die inneren Ausnahmen, die diese Ausnahme verursacht haben.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.

Eigenschaften

Data

Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen über die Ausnahme bereitstellen.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Geerbt von Exception)
HelpLink

Ruft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest.Gets or sets a link to the help file associated with this exception.

(Geerbt von Exception)
HResult

Ruft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Geerbt von Exception)
InnerException

Ruft die Exception-Instanz ab, die die aktuelle Ausnahme verursacht hat.Gets the Exception instance that caused the current exception.

(Geerbt von Exception)
InnerExceptions

Ruft eine schreibgeschützte Auflistung der Exception-Instanzen ab, die die aktuelle Ausnahme verursacht haben.Gets a read-only collection of the Exception instances that caused the current exception.

Message

Ruft eine Meldung ab, in der die Ausnahme beschrieben wird.Gets a message that describes the exception.

Source

Gibt den Namen der Anwendung oder des Objekts zurück, die bzw. das den Fehler verursacht hat, oder legt diesen fest.Gets or sets the name of the application or the object that causes the error.

(Geerbt von Exception)
StackTrace

Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab.Gets a string representation of the immediate frames on the call stack.

(Geerbt von Exception)
TargetSite

Ruft die Methode ab, die die aktuelle Ausnahme auslöst.Gets the method that throws the current exception.

(Geerbt von Exception)

Methoden

Equals(Object)

Ermittelt, ob das angegebene Objekt und das aktuelle Objekt gleich sind.Determines whether the specified object is equal to the current object.

(Geerbt von Object)
Flatten()

Fasst AggregateException-Instanzen in einer einzigen neuen Instanz zusammen.Flattens an AggregateException instances into a single, new instance.

GetBaseException()

Gibt die AggregateException zurück, die diese Ausnahme verursacht hat.Returns the AggregateException that is the root cause of this exception.

GetHashCode()

Dient als die Standard-HashfunktionServes as the default hash function.

(Geerbt von Object)
GetObjectData(SerializationInfo, StreamingContext)

Initialisiert eine neue Instanz der AggregateException-Klasse mit serialisierten Daten.Initializes a new instance of the AggregateException class with serialized data.

GetType()

Ruft den Laufzeittyp der aktuellen Instanz ab.Gets the runtime type of the current instance.

(Geerbt von Exception)
Handle(Func<Exception,Boolean>)

Ruft einen Handler für jede in dieser Exception enthaltenen AggregateException auf.Invokes a handler on each Exception contained by this AggregateException.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
ToString()

Erstellt eine Zeichenfolgendarstellung der aktuellen AggregateException und gibt diese zurück.Creates and returns a string representation of the current AggregateException.

Ereignisse

SerializeObjectState

Tritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmezustandsobjekt mit serialisierten Daten über die Ausnahme zu erstellen.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Geerbt von Exception)

Gilt für:

Threadsicherheit

Alle öffentlichen und geschützten Member von AggregateException sind Thread sicher und können gleichzeitig von mehreren Threads verwendet werden.All public and protected members of AggregateException are thread-safe and may be used concurrently from multiple threads.