Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Proprietà Exception.InnerException

 

Data di pubblicazione: ottobre 2016

Ottiene l'istanza di Exception che ha causato l'eccezione corrente.

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

public Exception InnerException { get; }

Valore proprietà

Type: System.Exception

Oggetto che descrive l'errore che ha causato l'eccezione corrente. La proprietà InnerException restituisce lo stesso valore passato al costruttore Exception(String, Exception), oppure null se il valore dell'eccezione interna non è stato fornito al costruttore. Questa proprietà è di sola lettura.

Quando un'eccezione X viene generata come risultato diretto di un'eccezione precedente Y, InnerException proprietà X deve contenere un riferimento a Y.

Utilizzare la proprietà InnerException per ottenere il set di eccezioni che ha causato l'eccezione corrente.

Si può creare una nuova eccezione che catturi un'eccezione precedente. Il codice che gestisce che la seconda eccezione è possibile rendere utilizzano le informazioni aggiuntive all'eccezione precedente per gestire l'errore in modo più appropriato.

Supponiamo che ci sia una funzione che legga un file e formatti i dati provenienti da esso. In questo esempio, quando si cerca di leggere il file, un IOException viene generata un'eccezione. La funzione intercetta il IOException e genera un FileNotFoundException. Il IOException è stato possibile salvare nel InnerException proprietà del FileNotFoundException, per attivare il codice che memorizza nella cache il FileNotFoundException per esaminare la causa dell'errore iniziale.

Il InnerException che contiene un riferimento all'eccezione interna, è impostata al momento dell'inizializzazione dell'oggetto eccezione.

Nell'esempio riportato di seguito viene illustrato come generare e intercettare un'eccezione che fa riferimento all'eccezione interna.

using System;

public class AppException : Exception
{
   public AppException(String message) : base (message)
   {}

   public AppException(String message, Exception inner) : base(message,inner) {}
}

public class Example
{
   public static void Main()
   {
      Example ex = new Example();

      try {
         ex.CatchInner();
      }
      catch(AppException e) {
         Console.WriteLine ("In catch block of Main method.");
         Console.WriteLine("Caught: {0}", e.Message);
         if (e.InnerException != null)
            Console.WriteLine("Inner exception: {0}", e.InnerException);
      }
   }

   public void ThrowInner ()
   {
      throw new AppException("Exception in ThrowInner method.");
   }

   public void CatchInner() 
   {
      try {
         this.ThrowInner();
      }
      catch (AppException e) {
         throw new AppException("Error in CatchInner caused by calling the ThrowInner method.", e);
      }
   }
}
// The example displays the following output:
//    In catch block of Main method.
//    Caught: Error in CatchInner caused by calling the ThrowInner method.
//    Inner exception: AppException: Exception in ThrowInner method.
//       at Example.CatchInner()

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: