AggregateException Sınıf

Tanım

Uygulama yürütmesi sırasında oluşan bir veya daha fazla hatayı temsil eder.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
[<System.Serializable>]
type AggregateException = class
    inherit Exception
Public Class AggregateException
Inherits Exception
Devralma
AggregateException
Öznitelikler

Örnekler

Aşağıdaki örnek, AggregateException özel durumu yakalar ve Handle içerdiği her özel durumu işlemek için yöntemini çağırır.The following example catches the AggregateException exception and calls the Handle method to handle each exception it contains. Örneği ilk değişkenle derlemek ve çalıştırmak, task1 AggregateException özel durum içeren bir nesne ile sonuçlanmalıdır UnauthorizedAccessException .Compiling and running the example with the first task1 variable should result in an AggregateException object that contains an UnauthorizedAccessException exception. Bu satırı yorumlama, ikinci değişkenin yorum kaldırma task1 ve örneği derleme ve çalıştırma AggregateException özel durum içeren bir nesne oluşturur 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

Açıklamalar

AggregateException birden çok başarısızlığı tek bir throwable özel durum nesnesinde birleştirmek için kullanılır.AggregateException is used to consolidate multiple failures into a single, throwable exception object. Bu, görev paralel kitaplığı (TPL) ve paralel LINQ (PLINQ)içinde yaygın olarak kullanılır.It is used extensively in the Task Parallel Library (TPL) and Parallel LINQ (PLINQ). Daha fazla bilgi için bkz. özel durum işleme ve nasıl yapılır: PLINQ sorgusunda özel durumları işleme.For more information, see Exception Handling and How to: Handle Exceptions in a PLINQ Query. Daha fazla bilgi için bkz. .NET önemli blogda özel durumlar toplama girişi.For additional information, see the Aggregating Exceptions entry in the .NET Matters blog.

Oluşturucular

AggregateException()

Bir AggregateException hatayı açıklayan sistem tarafından sağlanan iletiyle sınıfının yeni bir örneğini başlatır.Initializes a new instance of the AggregateException class with a system-supplied message that describes the error.

AggregateException(Exception[])

AggregateExceptionBu özel durumun nedeni olan iç özel durumların başvuruları ile sınıfın yeni bir örneğini başlatır.Initializes a new instance of the AggregateException class with references to the inner exceptions that are the cause of this exception.

AggregateException(IEnumerable<Exception>)

AggregateExceptionBu özel durumun nedeni olan iç özel durumların başvuruları ile sınıfın yeni bir örneğini başlatır.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 sınıfının yeni bir örneğini serileştirilmiş verilerle başlatır.Initializes a new instance of the AggregateException class with serialized data.

AggregateException(String)

Bir AggregateException hatayı açıklayan belirtilen iletiyle sınıfın yeni bir örneğini başlatır.Initializes a new instance of the AggregateException class with a specified message that describes the error.

AggregateException(String, Exception)

AggregateExceptionBelirtilen bir hata iletisiyle sınıfın yeni bir örneğini ve bu özel durumun nedeni olan iç özel duruma bir başvuruyu başlatır.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[])

Belirtilen bir hata iletisiyle sınıfın yeni bir örneğini başlatır AggregateException ve bu özel durumun nedeni olan iç özel durumlara başvurur.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>)

Belirtilen bir hata iletisiyle sınıfın yeni bir örneğini başlatır AggregateException ve bu özel durumun nedeni olan iç özel durumlara başvurur.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.

Özellikler

Data

Özel durum hakkında ek kullanıcı tanımlı bilgiler sağlayan anahtar/değer çiftleri koleksiyonunu alır.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Devralındığı yer: Exception)
HelpLink

Bu özel durumla ilişkili Yardım dosyasının bağlantısını alır veya ayarlar.Gets or sets a link to the help file associated with this exception.

(Devralındığı yer: Exception)
HResult

Belirli bir özel duruma atanan kodlanmış bir sayısal değer olan HRESULT 'yi alır veya ayarlar.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Devralındığı yer: Exception)
InnerException

ExceptionGeçerli özel duruma neden olan örneği alır.Gets the Exception instance that caused the current exception.

(Devralındığı yer: Exception)
InnerExceptions

ExceptionGeçerli özel duruma neden olan örneklerin salt okunurdur koleksiyonunu alır.Gets a read-only collection of the Exception instances that caused the current exception.

Message

Özel durumu açıklayan bir ileti alır.Gets a message that describes the exception.

Message

Geçerli özel durumu açıklayan bir ileti alır.Gets a message that describes the current exception.

(Devralındığı yer: Exception)
Source

Uygulamanın veya hataya neden olan nesnenin adını alır veya ayarlar.Gets or sets the name of the application or the object that causes the error.

(Devralındığı yer: Exception)
StackTrace

Çağrı yığınında anlık çerçevelerin dize gösterimini alır.Gets a string representation of the immediate frames on the call stack.

(Devralındığı yer: Exception)
TargetSite

Geçerli özel durumu oluşturan yöntemi alır.Gets the method that throws the current exception.

(Devralındığı yer: Exception)

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.Determines whether the specified object is equal to the current object.

(Devralındığı yer: Object)
Flatten()

Bir AggregateException örneği tek, yeni bir örneğe düzleştirir.Flattens an AggregateException instances into a single, new instance.

GetBaseException()

AggregateExceptionBu özel durumun asıl nedeni olan öğesini döndürür.Returns the AggregateException that is the root cause of this exception.

GetHashCode()

Varsayılan karma işlevi olarak işlev görür.Serves as the default hash function.

(Devralındığı yer: Object)
GetObjectData(SerializationInfo, StreamingContext)

AggregateException sınıfının yeni bir örneğini serileştirilmiş verilerle başlatır.Initializes a new instance of the AggregateException class with serialized data.

GetObjectData(SerializationInfo, StreamingContext)

Türetilmiş bir sınıfta geçersiz kılınırsa, SerializationInfo özel durum hakkındaki bilgileri ayarlar.When overridden in a derived class, sets the SerializationInfo with information about the exception.

(Devralındığı yer: Exception)
GetType()

Geçerli örneğin çalışma zamanı türünü alır.Gets the runtime type of the current instance.

(Devralındığı yer: Exception)
Handle(Func<Exception,Boolean>)

Bu tarafından içerilen her bir işleyici çağırır Exception AggregateException .Invokes a handler on each Exception contained by this AggregateException.

MemberwiseClone()

Geçerli bir basit kopyasını oluşturur Object .Creates a shallow copy of the current Object.

(Devralındığı yer: Object)
ToString()

Geçerli bir dize temsili oluşturur ve döndürür AggregateException .Creates and returns a string representation of the current AggregateException.

Ekinlikler

SerializeObjectState

Özel durum hakkında serileştirilmiş veri içeren bir özel durum nesnesi oluşturmak için bir özel durum serileştirildiğinde gerçekleşir.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Devralındığı yer: Exception)

Şunlara uygulanır

İş Parçacığı Güvenliği

Tüm ortak ve korumalı üyeleri AggregateException iş parçacığı açısından güvenlidir ve birden çok iş parçacığından aynı anda kullanılabilir.All public and protected members of AggregateException are thread-safe and may be used concurrently from multiple threads.