AggregateException AggregateException AggregateException AggregateException Class

Definizione

Rappresenta uno o più errori che si verificano durante l'esecuzione dell'applicazione.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
Ereditarietà
AggregateExceptionAggregateExceptionAggregateExceptionAggregateException
Attributi

Esempi

Nell'esempio seguente viene rilevata l'eccezione AggregateException e viene chiamato il metodo Handle per gestire ogni eccezione in esso contenuta.The following example catches the AggregateException exception and calls the Handle method to handle each exception it contains. Se si compila e si esegue l'esempio con la prima variabile task1 viene generato un oggetto AggregateException contenente un'eccezione UnauthorizedAccessException.Compiling and running the example with the first task1 variable should result in an AggregateException object that contains an UnauthorizedAccessException exception. Se si commenta tale riga, si rimuove il commento dalla seconda variabile task1 e si compila e si esegue l'esempio viene generato un oggetto AggregateException contenente un'eccezione 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

Commenti

AggregateException Consente di consolidare più errori in un oggetto eccezione throwable singolo.AggregateException is used to consolidate multiple failures into a single, throwable exception object. Viene utilizzato diffusamente il Task Parallel Library (TPL) e Parallel LINQ (PLINQ).It is used extensively in the Task Parallel Library (TPL) and Parallel LINQ (PLINQ). Per altre informazioni, vedere Gestione delle eccezioni e Procedura: Gestire le eccezioni in una query PLINQ.For more information, see Exception Handling and How to: Handle Exceptions in a PLINQ Query. Per altre informazioni, vedere la aggregazione delle eccezioni voce nel blog .NET Matters.For additional information, see the Aggregating Exceptions entry in the .NET Matters blog.

Costruttori

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

Inizializza una nuova istanza della classe AggregateException con un messaggio fornito dal sistema in cui viene descritto l'errore.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[])

Inizializza una nuova istanza della classe AggregateException con riferimenti alle eccezioni interne che sono la causa dell'eccezione.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>)

Inizializza una nuova istanza della classe AggregateException con riferimenti alle eccezioni interne che sono la causa dell'eccezione.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)

Inizializza una nuova istanza della classe AggregateException con dati serializzati.Initializes a new instance of the AggregateException class with serialized data.

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

Inizializza una nuova istanza della classe AggregateException con un messaggio specificato in cui viene descritto l'errore.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)

Inizializza una nuova istanza della classe AggregateException con un messaggio di errore specificato e un riferimento all'eccezione interna che è la causa dell'eccezione corrente.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[])

Inizializza una nuova istanza della classe AggregateException con un messaggio di errore specifico e riferimenti alle eccezioni interne che sono la causa dell'eccezione.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>)

Inizializza una nuova istanza della classe AggregateException con un messaggio di errore specifico e riferimenti alle eccezioni interne che sono la causa dell'eccezione.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.

Proprietà

Data Data Data Data

Ottiene una raccolta di coppie chiave-valore che fornisce informazioni aggiuntive definite dall'utente relative all'eccezione.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Inherited from Exception)
HelpLink HelpLink HelpLink HelpLink

Ottiene o imposta un collegamento al file della Guida associato all'eccezione.Gets or sets a link to the help file associated with this exception.

(Inherited from Exception)
HResult HResult HResult HResult

Ottiene o imposta HRESULT, un valore numerico codificato che viene assegnato a un'eccezione specifica.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Inherited from Exception)
InnerException InnerException InnerException InnerException

Ottiene l'istanza di Exception che ha causato l'eccezione corrente.Gets the Exception instance that caused the current exception.

(Inherited from Exception)
InnerExceptions InnerExceptions InnerExceptions InnerExceptions

Ottiene una raccolta in sola lettura delle istanze di Exception che hanno causato l'eccezione corrente.Gets a read-only collection of the Exception instances that caused the current exception.

Message Message Message Message
Source Source Source Source

Ottiene o imposta il nome dell'oggetto o dell'applicazione che ha generato l'errore.Gets or sets the name of the application or the object that causes the error.

(Inherited from Exception)
StackTrace StackTrace StackTrace StackTrace

Ottiene una rappresentazione di stringa dei frame immediati nello stack di chiamate.Gets a string representation of the immediate frames on the call stack.

(Inherited from Exception)
TargetSite TargetSite TargetSite TargetSite

Ottiene il metodo che genera l'eccezione corrente.Gets the method that throws the current exception.

(Inherited from Exception)

Metodi

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

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

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

Semplifica le istanze dell'oggetto AggregateException in una singola nuova istanza.Flattens an AggregateException instances into a single, new instance.

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

Restituisce l'oggetto AggregateException che rappresenta la causa principale dell'eccezione corrente.Returns the AggregateException that is the root cause of this exception.

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

Funge da funzione hash predefinita.Serves as the default hash function.

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

Inizializza una nuova istanza della classe AggregateException con dati serializzati.Initializes a new instance of the AggregateException class with serialized data.

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

Ottiene il tipo di runtime dell'istanza corrente.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>)

Richiama un gestore su ogni oggetto Exception contenuto da questo oggetto AggregateException.Invokes a handler on each Exception contained by this AggregateException.

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

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

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

Crea e restituisce una rappresentazione di stringa dell'oggetto AggregateException corrente.Creates and returns a string representation of the current AggregateException.

Eventi

SerializeObjectState SerializeObjectState SerializeObjectState SerializeObjectState

Si verifica quando un'eccezione viene serializzata per creare un oggetto di stato eccezione contenente i dati serializzati relativi all'eccezione.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Inherited from Exception)

Si applica a

Thread safety

Tutti i membri pubblici e protetti di AggregateException sono thread-safe e possono essere utilizzati contemporaneamente da più thread.All public and protected members of AggregateException are thread-safe and may be used concurrently from multiple threads.