Ler em inglês

Compartilhar via


Exception.HResult Propriedade

Definição

Obtém ou define HRESULT, um valor numérico codificado que é atribuído a uma exceção específica.

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

Valor da propriedade

Int32

O valor HRESULT.

Exemplos

O exemplo de código a seguir define uma classe derivada Exception que define a HResult propriedade como um valor personalizado em seu construtor.

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

Comentários

HRESULT é um valor de 32 bits, dividido em três campos diferentes: um código de severidade, um código de facilidade e um código de erro. O código de severidade indica se o valor de retorno representa informações, aviso ou erro. O código de facilidade identifica a área do sistema responsável pelo erro. O código de erro é um número exclusivo atribuído para representar a exceção. Cada exceção é mapeada para um HRESULT distinto. Quando o código gerenciado gera uma exceção, o runtime passa o HRESULT para o cliente COM. Quando o código não gerenciado retorna um erro, o HRESULT é convertido em uma exceção, que é gerada pelo runtime. Para obter informações sobre valores HRESULT e suas exceções de .NET Framework correspondentes, consulte Como mapear HRESULTs e exceções. Consulte valores HRESULT comuns na documentação Windows para obter uma lista dos valores que você provavelmente encontrará.

A partir do .NET Framework 4.5, o HResult setter da propriedade é protegido, enquanto seu getter é público. Nas versões anteriores do .NET Framework, o getter e o setter são protegidos.

Aplica-se a

Produto Versões
.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

Confira também