Exception.HResult Właściwość

Definicja

Pobiera lub ustawia HRESULT, zakodowaną wartość liczbową przypisaną do określonego wyjątku.

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

Wartość właściwości

Wartość HRESULT.

Przykłady

Poniższy przykład kodu definiuje klasę pochodną Exception , która ustawia HResult właściwość na wartość niestandardową w jego konstruktorze.

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

Uwagi

HRESULT to wartość 32-bitowa podzielona na trzy różne pola: kod ważności, kod obiektu i kod błędu. Kod ważności wskazuje, czy wartość zwracana reprezentuje informacje, ostrzeżenie lub błąd. Kod obiektu identyfikuje obszar systemu odpowiedzialnego za błąd. Kod błędu to unikatowa liczba przypisana do reprezentowania wyjątku. Każdy wyjątek jest mapowany na odrębne HRESULT. Gdy kod zarządzany zgłasza wyjątek, środowisko uruchomieniowe przekazuje wartość HRESULT do klienta COM. Gdy kod niezarządzany zwraca błąd, hrESULT jest konwertowany na wyjątek, który jest następnie zgłaszany przez środowisko uruchomieniowe. Aby uzyskać informacje o wartościach HRESULT i odpowiadających im wyjątkach .NET Framework, zobacz Jak mapować wartości HRESULTs i wyjątki. Zobacz Typowe wartości HRESULT w dokumentacji systemu Windows, aby uzyskać listę wartości, które najprawdopodobniej napotkasz.

Począwszy od .NET Framework 4.5, HResult właściwość jest chroniona, podczas gdy jego getter jest publiczny. W poprzednich wersjach .NET Framework zarówno getter, jak i setter są chronione.

Dotyczy

Produkt Wersje
.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, 10
.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

Zobacz też