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.HResult

 

Data di pubblicazione: novembre 2016

Ottiene o imposta HRESULT, un valore numerico codificato che viene assegnato ad una specifica eccezione.

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

public int HResult { get; protected set; }

Valore proprietà

Type: System.Int32

Valore HRESULT.

HRESULT è un valore a 32 bit, suddiviso in tre campi differenti: un codice di gravità, un codice di funzionalità e un codice di errore. Il codice di gravità indica se il valore restituito rappresenta informazioni, avviso o errore. Il codice descrittivo identifica l'area del sistema responsabile dell'errore. Il codice di errore è un numero univoco assegnato per rappresentare l'eccezione. Ogni eccezione viene eseguito il mapping a un HRESULT distinto. Quando il codice gestito genera un'eccezione, il runtime passa il valore HRESULT per il client COM. Quando il codice non gestito viene restituito un errore, HRESULT viene convertito in un'eccezione, che viene quindi generata dal runtime. Per informazioni sui valori HRESULT e le relative eccezioni corrispondente di .NET Framework, vedere How to: Map HRESULTs and Exceptions. Vedere Common HRESULT Values nella documentazione di Windows per un elenco dei valori di cui si è più probabile incontrare.

A partire dal .NET Framework 4.5, HResult setter della proprietà è protetto, mentre il metodo Get è pubblico. Nelle versioni precedenti di .NET Framework, vengono protetti sia getter e setter.

Esempio di codice seguente definisce un oggetto derivato Exception classe che imposta la HResult proprietà su un valore personalizzato nel relativo costruttore.

// Example for the Exception.HResult property.
using System;

namespace NDP_UE_CS
{
    // Create the derived exception class.
    class SecondLevelException : Exception
    {
        const int SecondLevelHResult = unchecked( (int)0x81234567 );

        // Set HResult for this exception, and include it in 
        // the exception message.
        public SecondLevelException( string message, Exception inner ) :
            base( string.Format( "(HRESULT:0x{1:X8}) {0}", 
                message, SecondLevelHResult ), inner )
        {
            HResult = SecondLevelHResult;
        }
    }

    class HResultDemo 
    {
        public static void Main() 
        {
            Console.WriteLine( 
                "This example of Exception.HResult " +
                "generates the following output.\n" );

            // This function forces a division by 0 and throws 
            // a second exception.
            try
            {
                try
                {
                    int  zero = 0;
                    int  ecks = 1 / zero;
                }
                catch( Exception ex )
                {
                    throw new SecondLevelException( 
                        "Forced a division by 0 and threw " +
                        "a second exception.", ex );
                }
            }
            catch( Exception ex )
            {
                Console.WriteLine( ex.ToString( ) );
            }
        }
    }
}

/*
This example of Exception.HResult generates the following output.

NDP_UE_CS.SecondLevelException: (HRESULT:0x81234567) Forced a division by 0 and
 threw a second exception. ---> System.DivideByZeroException: Attempted to divi
de by zero.
   at NDP_UE_CS.HResultDemo.Main()
   --- End of inner exception stack trace ---
   at NDP_UE_CS.HResultDemo.Main()
*/

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: