Questa documentazione è stata archiviata e non viene gestita.

Proprietà Exception.InnerException

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

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

public Exception InnerException { get; }
/** @property */
public final Exception get_InnerException ()

public final function get InnerException () : Exception

Valore proprietà

Istanza di Exception in cui viene descritto l'errore che ha causato l'eccezione corrente. La proprietà InnerException restituisce lo stesso valore passato al costruttore, oppure un riferimento null (Nothing) se il valore dell'eccezione interna non è stato fornito al costruttore. Questa proprietà è in sola lettura.

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

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

È possibile creare un nuova eccezione che ne intercetti una precedente. Nel codice che gestisce la seconda eccezione è possibile utilizzare le informazioni relative all'eccezione precedente per gestire l'errore in modo più appropriato.

Se si dispone di una funzione con lo scopo di leggere un file e formattarne i dati, quando si cerca di leggere il file, viene generata un'eccezione IOException. La funzione intercetta IOException e genera un'eccezione FileNotFoundException. È possibile salvare IOException nella proprietà InnerException del FileNotFoundException, per attivare il codice per l'intercettazione di FileNotFoundException allo scopo di esaminare la causa dell'errore iniziale.

La proprietà InnerException, che contiene un riferimento all'eccezione interna, viene impostata all'inizializzazione dell'oggetto eccezione.

Nell'esempio seguente sono illustrate la generazione e l'intercettazione di un'eccezione che fa riferimento all'eccezione interna.

using System;
public class MyAppException:ApplicationException 
{
   public MyAppException (String message) : base (message) 
   {}
   public MyAppException (String message, Exception inner) : base(message,inner) {}	
   }
public class ExceptExample 
{
   public void ThrowInner () 
   {
   throw new MyAppException("ExceptExample inner exception");
   }
   public void CatchInner() 
   {
      try 
      {
      this.ThrowInner();
      }
         catch (Exception e) 
         {
         throw new MyAppException("Error caused by trying ThrowInner.",e);
         }
      }
   }
public class Test 
{
   public static void Main() 
   {
   ExceptExample testInstance = new ExceptExample();
      try 
      {
      testInstance.CatchInner();
      }
         catch(Exception e) 
         {
         Console.WriteLine ("In Main catch block. Caught: {0}", e.Message);
         Console.WriteLine ("Inner Exception is {0}",e.InnerException);
         }
      }
}

import System.*;
public class MyAppException extends ApplicationException
{
    public MyAppException(String message)
    {
      super(message);
    } //MyAppException

    public MyAppException(String message, System.Exception inner)
    {
      super(message, inner);
    } //MyAppException
} //MyAppException

public class ExceptExample
{
    public void ThrowInner()throws MyAppException
    {
        throw new MyAppException("ExceptExample inner exception");
    } //ThrowInner

    public void CatchInner()throws MyAppException
    {
        try {
            this.ThrowInner();
        }
        catch (System.Exception e) {
            throw new MyAppException("Error caused by trying ThrowInner.", e);
        }
    } //CatchInner
} //ExceptExample

public class Test
{
    public static void main(String[] args)
    {
        ExceptExample testInstance = new ExceptExample();
        try {
            testInstance.CatchInner();
        }
        catch (System.Exception e) {
            Console.WriteLine("In main catch block. Caught: {0}", 
                e.get_Message());
            Console.WriteLine("Inner Exception is {0}", 
                e.get_InnerException());
        }
    } //main
} //Test

L'output del codice è il seguente:

In Main
  catch block. Caught: Error caused by trying ThrowInner. Inner Exception is
  MyAppException: ExceptExample inner exception at ExceptExample.ThrowInner() at
  ExceptExample.CatchInner()

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

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.

.NET Framework

Supportato in: 2.0 1.1 1.0

.NET Compact Framework

Supportato in: 2.0 1.0
Mostra: