Exception.HResult Свойство

Определение

Возвращает или задает HRESULT — кодированное числовое значение, присвоенное определенному исключению.

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

Значение свойства

Int32

Значение HRESULT.

Примеры

В следующем примере кода определяется производный Exception класс, который присваивает HResult свойству пользовательское значение в конструкторе.

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

Комментарии

HRESULT — это 32-разрядное значение, разделенное на три разных поля: код серьезности, код объекта и код ошибки. Код серьезности указывает, представляет ли возвращенное значение сведения, предупреждение или ошибку. Код устройства определяет область системы, из-за которой возникла ошибка. Код ошибки ― это уникальный номер, представляющий исключение. Каждое исключение сопоставляется с отдельным HRESULT. Когда управляемый код создает исключение, среда выполнения передает HRESULT клиенту COM. Когда неуправляемый код возвращает ошибку, HRESULT преобразуется в исключение, которое затем вызывается средой выполнения. Сведения о значениях HRESULT и их соответствующих платформа .NET Framework исключениях см. в разделе "Практическое руководство. Сопоставление HRESULT и исключений". Общие значения HRESULT см. в Windows документации по списку наиболее вероятных значений.

Начиная с платформа .NET Framework 4.5 HResult метод задания свойства защищен, тогда как его метод получения является общедоступным. В предыдущих версиях платформа .NET Framework защита метода получения и задания.

Применяется к

Продукт Версии
.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
.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
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

См. также раздел