Auf Englisch lesen

Freigeben über


Exception.HResult Eigenschaft

Definition

Ruft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist.

public int HResult { get; protected set; }
public int HResult { get; set; }
protected int HResult { get; set; }

Eigenschaftswert

Der HRESULT-Wert.

Beispiele

Im folgenden Codebeispiel wird eine abgeleitete Exception Klasse definiert, die die HResult Eigenschaft auf einen benutzerdefinierten Wert im Konstruktor festlegt.

// 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()
        {
            // 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()
*/

Hinweise

Bei HRESULT handelt es sich um einen 32-Bit-Wert, der in drei separate Felder unterteilt ist: Fehlergewichtung, Funktionscode und Fehlercode. Die Fehlergewichtung gibt an, ob der Rückgabewert Informationen, eine Warnung oder einen Fehler darstellt. Der Funktionscode identifiziert den Bereich des Systems, der für den Fehler verantwortlich ist. Der Fehlercode ist eine eindeutige Zahl, die zum Darstellen der Ausnahme zugewiesen wurde. Jede Ausnahme wird einem eindeutigen HRESULT zugeordnet. Wenn verwalteter Code eine Ausnahme auslöst, übergibt die Runtime das HRESULT an den COM-Client. Wenn nicht verwalteter Code einen Fehler zurückgibt, wird das HRESULT in eine Ausnahme konvertiert, die dann von der Runtime ausgelöst wird. Informationen zu HRESULT-Werten und den entsprechenden .NET Framework Ausnahmen finden Sie unter Vorgehensweise: Zuordnen von HRESULTs und Ausnahmen. Eine Liste der Werte, auf die Sie wahrscheinlich stoßen, finden Sie unter Allgemeine HRESULT-Werte in der Windows-Dokumentation.

Ab dem .NET Framework 4.5 ist der Setter der HResult Eigenschaft geschützt, während der Getter öffentlich ist. In früheren Versionen der .NET Framework sind sowohl Getter als auch Setter geschützt.

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Weitere Informationen