Ler en inglés

Compartir por


Exception.HResult Propiedad

Definición

Obtiene o establece HRESULT, un valor numérico codificado que se asigna a una excepción específica.

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

Valor de propiedad

Valor HRESULT.

Ejemplos

En el ejemplo de código siguiente se define una clase derivada Exception que establece la HResult propiedad en un valor personalizado en su constructor.

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

Comentarios

HRESULT es un valor de 32 bits, dividido en tres campos: un código de gravedad, un código de componente y un código de error. El código de gravedad indica si el valor devuelto representa información, una advertencia o un error. El código de componente identifica el área del sistema responsable del error. El código de error es un número único que se asigna para representar la excepción. Cada excepción se asigna a un HRESULT distinto. Cuando el código administrado produce una excepción, el tiempo de ejecución pasa HRESULT al cliente COM. Cuando el código no administrado devuelve un error, HRESULT se convierte en una excepción, que el tiempo de ejecución inicia. Para obtener información sobre los valores HRESULT y sus excepciones de .NET Framework correspondientes, vea How to: Map HRESULTs and Exceptions. Consulte Valores HRESULT comunes en la documentación de Windows para obtener una lista de los valores que es más probable que encuentre.

A partir de .NET Framework 4.5, el establecedor de la HResult propiedad está protegido, mientras que su captador es público. En versiones anteriores de .NET Framework, tanto el captador como el establecedor están protegidos.

Se aplica a

Produto Versións
.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

Consulte también