StackOverflowException-Klasse

Die Ausnahme, die bei einem Überlauf des Ausführungsstapels durch zu viele geschachtelte Methodenaufrufe ausgelöst wird. Die Klasse kann nicht vererbt werden.

Namespace: System
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class StackOverflowException
    Inherits SystemException
'Usage
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

Hinweise

StackOverflowException wird bei Anwendungsfehlern wegen Stapelüberlaufs ausgelöst, meist im Falle einer sehr tief geschachtelten oder unbegrenzten Rekursion. Die Localloc-MSIL-Anweisung (Microsoft Intermediate Language) löst eine StackOverflowException aus.

StackOverflowException verwendet HRESULT COR_E_STACKOVERFLOW mit dem Wert 0x800703E9. Eine Liste der anfänglichen Eigenschaftenwerte für ein StackOverflowException-Objekt finden Sie unter den StackOverflowException-Konstruktoren.

Hinweis

Der Wert der vererbten Data-Eigenschaft ist immer NULL (Nothing in Visual Basic).

Versionsaspekte

In früheren Versionen von .NET Framework konnte die Anwendung ein StackOverflowException-Objekt abfangen (z. B. zum Wiederherstellen einer ungebundenen Rekursion). Diese Vorgehensweise wird zurzeit aber nicht mehr empfohlen, da wichtiger zusätzlicher Code erforderlich ist, um eine Ausnahme bei einem Stapelüberlauf verlässlich anzufangen und die Programmausführung fortzusetzen.

Ab .NET Framework, Version 2.0, kann ein StackOverflowException-Objekt nicht mehr durch einen try-catch-Block abgefangen werden, und der zugehörige Prozess wird standardmäßig beendet. Infolgedessen wird Benutzern geraten, ihren Code so zu schreiben, dass ein Stapelüberlauf erkannt und vermieden wird. Wenn die Anwendung z. B. von der Rekursion abhängig ist, verwenden Sie einen Zähler oder eine Zustandsbedingung, um die Rekursionsschleife zu beenden. Beachten Sie, dass eine Anwendung, die als Host für die Common Language Runtime (CLR) dient, festlegen kann, dass die CLR die Anwendungsdomäne, in der die Stapelüberlaufausnahme auftritt, entladen und den zugehörigen Prozess fortführen kann. Weitere Informationen finden Sie unter ICLRPolicyManager und Bereitstellen der Common Language Runtime.

Hinweis zu Windows 95, Windows 98, Windows 98 Zweite Ausgabe, Windows Millennium Edition: Eine ausgelöste StackOverflowException kann nicht in einem try-catch-Block abgefangen werden. Infolgedessen bewirkt die Ausnahme, dass der Prozess sofort beendet wird.

Vererbungshierarchie

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

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

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

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

StackOverflowException-Member
System-Namespace
Exception-Klasse

Weitere Ressourcen

Behandeln und Auslösen von Ausnahmen