StackOverflowException Classe
TOC
Comprimi il sommario
Espandi il sommario
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Classe StackOverflowException

 

Eccezione generata quando si verifica un overflow dello stack di esecuzione a causa del numero eccessivo di chiamate al metodo annidate. Questa classe non può essere ereditata.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

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

[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class StackOverflowException : SystemException

NomeDescrizione
System_CAPS_pubmethodStackOverflowException()

Inizializza una nuova istanza della classe StackOverflowException, impostando la proprietà Message della nuova istanza su un messaggio fornito dal sistema in cui viene descritto l'errore, ad esempio "L'operazione ha causato un overflow dello stack". Questo messaggio prende in considerazione le impostazioni cultura correnti del sistema.

System_CAPS_pubmethodStackOverflowException(String)

Inizializza una nuova istanza della classe StackOverflowException con un messaggio di errore specificato.

System_CAPS_pubmethodStackOverflowException(String, Exception)

Inizializza una nuova istanza della classe StackOverflowException con un messaggio di errore specificato e un riferimento all'eccezione interna che è la causa dell'eccezione corrente.

NomeDescrizione
System_CAPS_pubpropertyData

Ottiene una collezione di coppie chiave/valore che forniscono ulteriori informazioni definite dall'utente sull'eccezione. (Ereditato da Exception.)

System_CAPS_pubpropertyHelpLink

Ottiene o imposta un collegamento al file della Guida associato all'eccezione.(Ereditato da Exception.)

System_CAPS_pubpropertyHResult

Ottiene o imposta HRESULT, un valore numerico codificato che viene assegnato ad una specifica eccezione. (Ereditato da Exception.)

System_CAPS_pubpropertyInnerException

Ottiene l'istanza di Exception che ha causato l'eccezione corrente.(Ereditato da Exception.)

System_CAPS_pubpropertyMessage

Ottiene un messaggio che descrive l'eccezione corrente.(Ereditato da Exception.)

System_CAPS_pubpropertySource

Ottiene o imposta il nome dell'oggetto o dell'applicazione che ha generato l'errore.(Ereditato da Exception.)

System_CAPS_pubpropertyStackTrace

Ottiene una rappresentazione in forma di stringa dei frame nello stack di chiamate. (Ereditato da Exception.)

System_CAPS_pubpropertyTargetSite

Ottiene il metodo che ha generato l'eccezione corrente. (Ereditato da Exception.)

NomeDescrizione
System_CAPS_pubmethodEquals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object.)

System_CAPS_pubmethodGetBaseException()

Quando ne viene eseguito l'override in una classe derivata, restituisce l'Exception che è la causa radice di una o più eccezioni successive.(Ereditato da Exception.)

System_CAPS_pubmethodGetHashCode()

Funge da funzione hash predefinita.(Ereditato da Object.)

System_CAPS_pubmethodGetObjectData(SerializationInfo, StreamingContext)

Quando ne viene eseguito l'override in una classe derivata, imposta il controllo SerializationInfo con le informazioni sull'eccezione.(Ereditato da Exception.)

System_CAPS_pubmethodGetType()

Ottiene il tipo di runtime dell'istanza corrente.(Ereditato da Exception.)

System_CAPS_pubmethodToString()

Crea e restituisce una rappresentazione di stringa dell'eccezione corrente.(Ereditato da Exception.)

StackOverflowException viene generata per errori di overflow dello stack di esecuzione, in genere in caso di un problema di ricorsione troppo profonda o illimitata.

StackOverflowException utilizza HRESULT COR_E_STACKOVERFLOW, con valore 0x800703E9. Il Localloc istruzione di linguaggio intermedio (IL) genera StackOverflowException. Per un elenco di valori di proprietà iniziali per un StackOverflowException di oggetti, vedere il StackOverflowException costruttori.

In .NET Framework 1.0 e 1.1, è possibile rilevare un StackOverflowException oggetto (ad esempio, per correggere una ricorsione illimitata). A partire da .NET Framework 2.0, è possibile rilevare un StackOverflowException dell'oggetto con un try/catch blocco e il processo corrispondente viene terminato per impostazione predefinita. Di conseguenza, è consigliabile scrivere il codice per rilevare ed evitare un overflow dello stack. Ad esempio, se l'applicazione dipende dalla ricorsione, utilizzare un contatore o una condizione di stato per terminare il ciclo ricorsivo. Nell'esempio seguente utilizza un contatore per assicurarsi che il numero di ricorsiva chiama per la Execute metodo è limitato al massimo definito dalla costante MAX_RECURSIVE_CALLS.

using System;

public class Example
{
   private const int MAX_RECURSIVE_CALLS = 1000;
   static int ctr = 0;

   public static void Main()
   {
      Example ex = new Example();
      ex.Execute();
      Console.WriteLine("\nThe call counter: {0}", ctr);
   }

   private void Execute()
   {
      ctr++;
      if (ctr % 50 == 0)
         Console.WriteLine("Call number {0} to the Execute method", ctr);

      if (ctr <= MAX_RECURSIVE_CALLS)
         Execute();

      ctr--;
   }
}
// The example displays the following output:
//       Call number 50 to the Execute method
//       Call number 100 to the Execute method
//       Call number 150 to the Execute method
//       Call number 200 to the Execute method
//       Call number 250 to the Execute method
//       Call number 300 to the Execute method
//       Call number 350 to the Execute method
//       Call number 400 to the Execute method
//       Call number 450 to the Execute method
//       Call number 500 to the Execute method
//       Call number 550 to the Execute method
//       Call number 600 to the Execute method
//       Call number 650 to the Execute method
//       Call number 700 to the Execute method
//       Call number 750 to the Execute method
//       Call number 800 to the Execute method
//       Call number 850 to the Execute method
//       Call number 900 to the Execute method
//       Call number 950 to the Execute method
//       Call number 1000 to the Execute method
//
//       The call counter: 0
System_CAPS_noteNota

L'applicazione di HandleProcessCorruptedStateExceptionsAttribute dell'attributo a un metodo che genera un StackOverflowException non ha alcun effetto. È comunque possibile gestire l'eccezione dal codice utente.

Se l'applicazione ospita common language runtime (CLR), è possibile specificare che CLR deve scaricare il dominio applicazione in cui si verifica l'eccezione di overflow dello stack e consente di continuare il processo corrispondente. Per altre informazioni, vedere Interfaccia ICLRPolicyManager.

.NET Framework
Disponibile da 1.1
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0

Eventuali membri pubblici statici (Shared in Visual Basic) di questo tipo sono thread-safe. I membri di istanza non sono garantiti come thread-safe.

Torna all'inizio
Mostra:
© 2016 Microsoft