AggregateException 클래스

정의

애플리케이션을 실행하는 동안 발생하는 하나 이상의 오류를 나타냅니다.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
상속
AggregateException
특성

예제

다음 예제에서는 catch 합니다 AggregateException 예외 및 호출을 Handle 포함 된 각 예외를 처리 하는 방법입니다.The following example catches the AggregateException exception and calls the Handle method to handle each exception it contains. 컴파일 및 첫 번째 예제를 실행 task1 변수 개가 수신 되어야를 AggregateException 포함 된 개체는 UnauthorizedAccessException 예외입니다.Compiling and running the example with the first task1 variable should result in an AggregateException object that contains an UnauthorizedAccessException exception. 줄 주석, 주석 처리 제거 두 번째 task1 변수 및 컴파일 및 실행 예제 생성을 AggregateException 포함 된 개체는 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

설명

AggregateException 여러 오류를 throw 할 수 있는 단일 예외 개체를 통합 하는 데 사용 됩니다.AggregateException is used to consolidate multiple failures into a single, throwable exception object. 광범위 하 게 되는 TPL 작업 병렬 라이브러리 () 하 고 PLINQ (병렬 LINQ)합니다.It is used extensively in the Task Parallel Library (TPL) and Parallel LINQ (PLINQ). 자세한 내용은 예외 처리방법: PLINQ 쿼리의 예외 처리를 참조하세요.For more information, see Exception Handling and How to: Handle Exceptions in a PLINQ Query. 자세한 내용은 참조는 집계 예외 .NET Matters 블로그 항목입니다.For additional information, see the Aggregating Exceptions entry in the .NET Matters blog.

생성자

AggregateException()

오류를 설명하는 시스템 제공 메시지를 사용하여 AggregateException 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the AggregateException class with a system-supplied message that describes the error.

AggregateException(Exception[])

이 예외의 원인인 내부 예외에 대한 참조를 사용하여 AggregateException 클래스의 새 인스턴스를 초기화합니다.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 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the AggregateException class with references to the inner exceptions that are the cause of this exception.

AggregateException(SerializationInfo, StreamingContext)

serialize된 데이터를 사용하여 AggregateException 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the AggregateException class with serialized data.

AggregateException(String)

AggregateException 클래스의 새 인스턴스를 오류를 설명하는 지정된 메시지로 초기화합니다.Initializes a new instance of the AggregateException class with a specified message that describes the error.

AggregateException(String, Exception)

지정된 오류 메시지와 해당 예외의 원인인 내부 예외에 대한 참조를 사용하여 AggregateException 클래스의 새 인스턴스를 초기화합니다.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 클래스의 새 인스턴스를 초기화합니다.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 클래스의 새 인스턴스를 초기화합니다.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.

속성

Data

예외에 대한 사용자 정의 추가 정보를 제공하는 키/값 쌍의 컬렉션을 가져옵니다.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(다음에서 상속됨 Exception)
HelpLink

이 예외와 연결된 도움말 파일에 대한 링크를 가져오거나 설정합니다.Gets or sets a link to the help file associated with this exception.

(다음에서 상속됨 Exception)
HResult

특정 예외에 할당된 코드화된 숫자 값인 HRESULT를 가져오거나 설정합니다.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(다음에서 상속됨 Exception)
InnerException

현재 예외를 발생시킨 Exception 인스턴스를 가져옵니다.Gets the Exception instance that caused the current exception.

(다음에서 상속됨 Exception)
InnerExceptions

현재 예외를 발생시킨 Exception 인스턴스의 읽기 전용 컬렉션을 가져옵니다.Gets a read-only collection of the Exception instances that caused the current exception.

Message

예외를 설명하는 메시지를 가져옵니다.Gets a message that describes the exception.

Source

오류를 발생시키는 애플리케이션 또는 개체의 이름을 가져오거나 설정합니다.Gets or sets the name of the application or the object that causes the error.

(다음에서 상속됨 Exception)
StackTrace

호출 스택의 직접 실행 프레임에 대한 문자열 표현을 가져옵니다.Gets a string representation of the immediate frames on the call stack.

(다음에서 상속됨 Exception)
TargetSite

현재 예외를 throw하는 메서드를 가져옵니다.Gets the method that throws the current exception.

(다음에서 상속됨 Exception)

메서드

Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(다음에서 상속됨 Object)
Flatten()

AggregateException 인스턴스를 단일 새 인스턴스로 평면화합니다.Flattens an AggregateException instances into a single, new instance.

GetBaseException()

이 예외의 근본 원인인 AggregateException을 반환합니다.Returns the AggregateException that is the root cause of this exception.

GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(다음에서 상속됨 Object)
GetObjectData(SerializationInfo, StreamingContext)

serialize된 데이터를 사용하여 AggregateException 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the AggregateException class with serialized data.

GetType()

현재 인스턴스의 런타임 형식을 가져옵니다.Gets the runtime type of the current instance.

(다음에서 상속됨 Exception)
Handle(Func<Exception,Boolean>)

AggregateException에 포함된 각 Exception에서 처리기를 호출합니다.Invokes a handler on each Exception contained by this AggregateException.

MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
ToString()

현재 AggregateException의 문자열 표현을 만들고 반환합니다.Creates and returns a string representation of the current AggregateException.

이벤트

SerializeObjectState

예외에 대한 serialize된 데이터가 들어 있는 예외 상태 개체가 만들어지도록 예외가 serialize될 때 발생합니다.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(다음에서 상속됨 Exception)

적용 대상

스레드 보안

모든 public 및 protected 멤버만 AggregateException 는 스레드로부터 안전 하 고 여러 스레드에서 동시에 사용할 수 있습니다.All public and protected members of AggregateException are thread-safe and may be used concurrently from multiple threads.