AggregateException Klasa

Definicja

Reprezentuje co najmniej jeden błąd występujący podczas wykonywania aplikacji.Represents one or more errors that occur during application execution.

public ref class AggregateException : Exception
public class AggregateException : Exception
[System.Serializable]
public class AggregateException : Exception
type AggregateException = class
    inherit Exception
Public Class AggregateException
Inherits Exception
Dziedziczenie
AggregateException
Atrybuty

Przykłady

Poniższy przykład przechwytuje wyjątek AggregateException i wywołuje metodę Handle, aby obsłużyć każdy wyjątek, który zawiera.The following example catches the AggregateException exception and calls the Handle method to handle each exception it contains. Kompilowanie i uruchamianie przykładu z pierwszą zmienną task1 powinna spowodować, że obiekt AggregateException zawierający wyjątek UnauthorizedAccessException.Compiling and running the example with the first task1 variable should result in an AggregateException object that contains an UnauthorizedAccessException exception. Dodawanie komentarza do tej linii, usuwanie komentarza drugiej zmiennej task1 i kompilowanie i uruchamianie przykładu powoduje utworzenie obiektu AggregateException zawierającego wyjątek 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

Uwagi

AggregateException jest używany do konsolidacji wielu błędów w pojedynczy, rzutny obiekt wyjątku.AggregateException is used to consolidate multiple failures into a single, throwable exception object. Jest ona używana w szerokim stopniu w bibliotece zadań równoległych (TPL) i Parallel LINQ (PLINQ).It is used extensively in the Task Parallel Library (TPL) and Parallel LINQ (PLINQ). Aby uzyskać więcej informacji, zobacz Obsługa wyjątków i instrukcje: obsługa wyjątków w zapytaniu PLINQ.For more information, see Exception Handling and How to: Handle Exceptions in a PLINQ Query. Aby uzyskać dodatkowe informacje, zobacz wpis " agregowanie wyjątków " w blogu dotyczący zagadnień związanych z platformą .NET.For additional information, see the Aggregating Exceptions entry in the .NET Matters blog.

Konstruktory

AggregateException()

Inicjuje nowe wystąpienie klasy AggregateException z komunikatem dostarczonym przez system, który opisuje błąd.Initializes a new instance of the AggregateException class with a system-supplied message that describes the error.

AggregateException(Exception[])

Inicjuje nowe wystąpienie klasy AggregateException z odwołaniami do wyjątków wewnętrznych, które są przyczyną tego wyjątku.Initializes a new instance of the AggregateException class with references to the inner exceptions that are the cause of this exception.

AggregateException(IEnumerable<Exception>)

Inicjuje nowe wystąpienie klasy AggregateException z odwołaniami do wyjątków wewnętrznych, które są przyczyną tego wyjątku.Initializes a new instance of the AggregateException class with references to the inner exceptions that are the cause of this exception.

AggregateException(SerializationInfo, StreamingContext)

Inicjuje nowe wystąpienie klasy AggregateException klasy z serializowanych danych.Initializes a new instance of the AggregateException class with serialized data.

AggregateException(String)

Inicjuje nowe wystąpienie klasy AggregateException z określonym komunikatem opisującym błąd.Initializes a new instance of the AggregateException class with a specified message that describes the error.

AggregateException(String, Exception)

Inicjuje nowe wystąpienie klasy AggregateException klasy przy użyciu określonego komunikatu o błędzie i odwołania do wewnętrznego wyjątku, który jest przyczyną tego wyjątku.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[])

Inicjuje nowe wystąpienie klasy AggregateException z określonym komunikatem o błędzie i odwołaniami do wyjątków wewnętrznych, które są przyczyną tego wyjątku.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>)

Inicjuje nowe wystąpienie klasy AggregateException z określonym komunikatem o błędzie i odwołaniami do wyjątków wewnętrznych, które są przyczyną tego wyjątku.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.

Właściwości

Data

Pobiera kolekcję par klucz/wartość, które zawierają dodatkowe informacje zdefiniowane przez użytkownika dotyczące wyjątku.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Odziedziczone po Exception)
HelpLink

Pobiera lub ustawia link do pliku pomocy skojarzonego z tym wyjątkiem.Gets or sets a link to the help file associated with this exception.

(Odziedziczone po Exception)
HResult

Pobiera lub ustawia wartość HRESULT, kodowane wartości liczbowe przypisane do określonego wyjątku.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Odziedziczone po Exception)
InnerException

Pobiera wystąpienie Exception, które spowodowało wyjątek bieżący.Gets the Exception instance that caused the current exception.

(Odziedziczone po Exception)
InnerExceptions

Pobiera kolekcję Exception wystąpień tylko do odczytu, która spowodowała bieżący wyjątek.Gets a read-only collection of the Exception instances that caused the current exception.

Message

Pobiera komunikat, który opisuje wyjątek.Gets a message that describes the exception.

Source

Pobiera lub ustawia nazwę aplikacji lub obiekt, który powoduje błąd.Gets or sets the name of the application or the object that causes the error.

(Odziedziczone po Exception)
StackTrace

Pobiera ciąg reprezentujący bezpośrednie ramki w stosie wywołań.Gets a string representation of the immediate frames on the call stack.

(Odziedziczone po Exception)
TargetSite

Pobiera metodę, która zgłasza bieżący wyjątek.Gets the method that throws the current exception.

(Odziedziczone po Exception)

Metody

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
Flatten()

Spłaszcza wystąpienia AggregateException w jedno nowe wystąpienie.Flattens an AggregateException instances into a single, new instance.

GetBaseException()

Zwraca AggregateException, który jest główną przyczyną tego wyjątku.Returns the AggregateException that is the root cause of this exception.

GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetObjectData(SerializationInfo, StreamingContext)

Inicjuje nowe wystąpienie klasy AggregateException klasy z serializowanych danych.Initializes a new instance of the AggregateException class with serialized data.

GetType()

Pobiera typ środowiska uruchomieniowego bieżącego wystąpienia.Gets the runtime type of the current instance.

(Odziedziczone po Exception)
Handle(Func<Exception,Boolean>)

Wywołuje program obsługi dla każdej Exception zawartej w tym AggregateException.Invokes a handler on each Exception contained by this AggregateException.

MemberwiseClone()

Tworzy skróconą kopię bieżącego Object.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
ToString()

Tworzy i zwraca reprezentację ciągu bieżącego AggregateException.Creates and returns a string representation of the current AggregateException.

Zdarzenia

SerializeObjectState

Występuje, gdy wyjątek jest serializowany w celu utworzenia obiektu stanu wyjątku, który zawiera serializowane dane dotyczące wyjątku.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Odziedziczone po Exception)

Dotyczy

Bezpieczeństwo wątkowe

Wszystkie publiczne i chronione elementy członkowskie AggregateException są bezpieczne dla wątków i mogą być używane współbieżnie z wielu wątków.All public and protected members of AggregateException are thread-safe and may be used concurrently from multiple threads.