다음을 통해 공유


StackOverflowException 클래스

실행 스택에 중첩 메서드 호출이 너무 많아서 오버플로될 때 throw되는 예외입니다. 이 클래스는 상속될 수 없습니다.

네임스페이스: System
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class StackOverflowException
    Inherits SystemException
‘사용 방법
Dim instance As StackOverflowException
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public sealed class StackOverflowException : SystemException
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class StackOverflowException sealed : public SystemException
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class StackOverflowException extends SystemException
SerializableAttribute 
ComVisibleAttribute(true) 
public final class StackOverflowException extends SystemException

설명

StackOverflowException은 일반적으로 재귀가 매우 깊거나 언바운드된 경우 실행 스택 오버플로 오류가 발생하면 throw됩니다. Localloc MSIL(Microsoft Intermediate Language) 명령은 StackOverflowException을 throw합니다.

StackOverflowException은 값이 0x800703E9인 HRESULT COR_E_STACKOVERFLOW를 사용합니다. StackOverflowException 개체의 초기 속성 값 목록은 StackOverflowException 생성자를 참조하십시오.

참고

상속된 Data 속성의 값은 항상 Null 참조(Visual Basic의 경우 Nothing)입니다.

버전 고려 사항

이전 버전의 .NET Framework에서는 응용 프로그램이 바인딩되지 않은 재귀에서 복구하려는 경우 등에 StackOverflowException 개체를 catch할 수 있었습니다. 그러나 이 경우 스택 오버플로 예외를 안정적으로 catch하고 프로그램 실행을 계속하려면 많은 양의 추가 코드가 필요하므로 현재는 이 방법이 권장되지 않습니다.

.NET Framework 버전 2.0부터는 try-catch 블록에서 StackOverflowException 개체를 catch할 수 없으며 해당 프로세스가 기본적으로 종료됩니다. 따라서 사용자는 스택 오버플로를 감지 및 방지하기 위한 코드를 직접 작성하는 것이 좋습니다. 예를 들어, 응용 프로그램에서 재귀를 사용하는 경우에는 카운터 또는 상태 조건을 사용하여 재귀 루프를 종료합니다. CLR(공용 언어 런타임)를 호스팅하는 응용 프로그램에서는 CLR에서 스택 오버플로 예외가 발생하는 응용 프로그램 도메인을 언로드하고 해당 프로세스가 계속될 수 있도록 지정할 수 있습니다. 자세한 내용은 ICLRPolicyManager공용 언어 런타임 호스팅을 참조하십시오.

Windows 95, Windows 98, Windows 98 Second Edition, Windows Millennium Edition 플랫폼 참고: throw된 StackOverflowException은 try-catch 블록에서 catch할 수 없습니다. 따라서 이 예외가 발생하면 프로세스가 즉시 종료됩니다.

상속 계층 구조

System.Object
   System.Exception
     System.SystemException
      System.StackOverflowException

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

StackOverflowException 멤버
System 네임스페이스
Exception 클래스

기타 리소스

예외 처리 및 Throw