AggregateException AggregateException AggregateException AggregateException Class

Definice

Představuje jednu nebo více chyb, ke kterým dochází při spuštění aplikace.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
Dědičnost
AggregateExceptionAggregateExceptionAggregateExceptionAggregateException
Atributy

Příklady

Následující příklad zachytí AggregateException výjimku a Handle volá metodu pro zpracování každé výjimky, kterou obsahuje.The following example catches the AggregateException exception and calls the Handle method to handle each exception it contains. Kompilace a spuštění příkladu s první task1 proměnnou by měla mít za následek AggregateException objekt, který obsahuje UnauthorizedAccessException výjimku.Compiling and running the example with the first task1 variable should result in an AggregateException object that contains an UnauthorizedAccessException exception. Přidání komentáře k tomuto řádku, zrušení komentáře druhé task1 proměnné a kompilace a spuštění příkladu AggregateException vytvoří objekt, který obsahuje IndexOutOfRangeException výjimku.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

Poznámky

AggregateExceptionslouží k sloučení více selhání do jediného objektu, který vyvolává výjimku.AggregateException is used to consolidate multiple failures into a single, throwable exception object. Používá se rozsáhle v Task Parallel Library (TPL) a Paralelní LINQ (PLINQ).It is used extensively in the Task Parallel Library (TPL) and Parallel LINQ (PLINQ). Další informace naleznete v tématu zpracování výjimek a postupy: Zpracování výjimek v dotazuPLINQ.For more information, see Exception Handling and How to: Handle Exceptions in a PLINQ Query. Další informace najdete v tématu agregace výjimek na blogu .NET – věci.For additional information, see the Aggregating Exceptions entry in the .NET Matters blog.

Konstruktory

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

Inicializuje novou instanci AggregateException třídy se zprávou dodanou systémem, která popisuje chybu.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[])

Inicializuje novou instanci AggregateException třídy s odkazy na vnitřní výjimky, které jsou příčinou této výjimky.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>)

Inicializuje novou instanci AggregateException třídy s odkazy na vnitřní výjimky, které jsou příčinou této výjimky.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)

Inicializuje novou instanci třídy AggregateException třídy se serializovanými daty.Initializes a new instance of the AggregateException class with serialized data.

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

Inicializuje novou instanci AggregateException třídy se zadanou zprávou, která popisuje chybu.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)

Inicializuje novou instanci třídy AggregateException třídy pomocí zadané chybové zprávy a odkazu na vnitřní výjimku, která je příčinou této výjimky.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[])

Inicializuje novou instanci AggregateException třídy se zadanou chybovou zprávou a odkazy na vnitřní výjimky, které jsou příčinou této výjimky.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>)

Inicializuje novou instanci AggregateException třídy se zadanou chybovou zprávou a odkazy na vnitřní výjimky, které jsou příčinou této výjimky.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.

Vlastnosti

Data Data Data Data

Získá kolekci párů klíč/hodnota, které poskytují další uživatelsky definované informace o výjimce.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Inherited from Exception)
HelpLink HelpLink HelpLink HelpLink

Získá nebo nastaví odkaz na soubor s nápovědě spojený s touto výjimkou.Gets or sets a link to the help file associated with this exception.

(Inherited from Exception)
HResult HResult HResult HResult

Získá nebo nastaví hodnotu HRESULT, kódované číselné hodnoty, která je přiřazena konkrétní výjimce.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Inherited from Exception)
InnerException InnerException InnerException InnerException

Exception Získá instanci, která způsobila aktuální výjimku.Gets the Exception instance that caused the current exception.

(Inherited from Exception)
InnerExceptions InnerExceptions InnerExceptions InnerExceptions

Načte kolekci Exception instancí jen pro čtení, které způsobily aktuální výjimku.Gets a read-only collection of the Exception instances that caused the current exception.

Message Message Message Message

Získá zprávu popisující výjimku.Gets a message that describes the exception.

Source Source Source Source

Získá nebo nastaví název aplikace nebo objektu, který způsobuje chybu.Gets or sets the name of the application or the object that causes the error.

(Inherited from Exception)
StackTrace StackTrace StackTrace StackTrace

Načte řetězcovou reprezentaci okamžitých snímků v zásobníku volání.Gets a string representation of the immediate frames on the call stack.

(Inherited from Exception)
TargetSite TargetSite TargetSite TargetSite

Získá metodu, která vyvolá aktuální výjimku.Gets the method that throws the current exception.

(Inherited from Exception)

Metody

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

Určuje, zda se zadaný objekt rovná aktuálnímu objektu.Determines whether the specified object is equal to the current object.

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

AggregateException Sloučí instance do jediné nové instance.Flattens an AggregateException instances into a single, new instance.

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

Vrátí hodnotu AggregateException , která je hlavní příčinou této výjimky.Returns the AggregateException that is the root cause of this exception.

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

Slouží jako výchozí funkce hash.Serves as the default hash function.

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

Inicializuje novou instanci třídy AggregateException třídy se serializovanými daty.Initializes a new instance of the AggregateException class with serialized data.

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

Získá typ modulu runtime aktuální instance.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>)

Vyvolá obslužnou rutinu pro každý Exception z nich obsažených AggregateException.Invokes a handler on each Exception contained by this AggregateException.

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

Vytvoří kopii aktuálního Objectseznamu.Creates a shallow copy of the current Object.

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

Vytvoří a vrátí řetězcovou reprezentaci aktuálního AggregateException.Creates and returns a string representation of the current AggregateException.

Události

SerializeObjectState SerializeObjectState SerializeObjectState SerializeObjectState

Nastane, pokud je serializovaná výjimka pro vytvoření objektu stavu výjimky, který obsahuje Serializovaná data o výjimce.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Inherited from Exception)

Platí pro

Bezpečný přístup z více vláken

Všechny veřejné a chráněné členy AggregateException jsou bezpečné pro přístup z více vláken a lze je používat souběžně z více vláken.All public and protected members of AggregateException are thread-safe and may be used concurrently from multiple threads.