# Exception.HResult Propriété

## Définition

Obtient ou définit HRESULT, valeur numérique codée qui est assignée à une exception spécifique.

``````public:  property int HResult {  public:
int get(); protected:
void set(int value); };``````
``````public:
property int HResult { int get(); void set(int value); };``````
``````protected:
property int HResult { int get(); void set(int value); };``````
``public int HResult { get; protected set; }``
``public int HResult { get; set; }``
``protected int HResult { get; set; }``
``member this.HResult : int with get, set``
``Public Property HResult As Integer``
``Protected Property HResult As Integer``

Valeur HRESULT.

## Exemples

L’exemple de code suivant définit une classe dérivée `Exception` qui définit la `HResult` propriété sur une valeur personnalisée dans son constructeur.

``````// Example for the Exception::HResult property.
using namespace System;

namespace NDP_UE_CPP
{

// Create the derived exception class.
ref class SecondLevelException: public Exception
{
private:
static int SecondLevelHResult = (int)0x81234567;

public:

// Set HResult for this exception, and include it in
// the exception message.
SecondLevelException( String^ message, Exception^ inner )
: Exception( String::Format( "(HRESULT:0x{1:X8}) {0}", message, SecondLevelHResult ), inner )
{
HResult = SecondLevelHResult;
}

};

// This function forces a division by 0 and throws
// a second exception.
void DivideBy0()
{
try
{
try
{
int zero = 0;
int ecks = 1 / zero;
}
catch ( Exception^ ex )
{
throw gcnew SecondLevelException( "Forced a division by 0 and threw "
"a second exception.",ex );
}

}
catch ( Exception^ ex )
{
Console::WriteLine( ex->ToString() );
}

}

}

int main()
{
NDP_UE_CPP::DivideBy0();
}

/*
This example of Exception::HResult generates the following output.

NDP_UE_CPP.SecondLevelException: (HRESULT:0x81234567) Forced a division by 0 an
d threw a second exception. ---> System.DivideByZeroException: Attempted to div
ide by zero.
at NDP_UE_CPP.DivideBy0()
--- End of inner exception stack trace ---
at NDP_UE_CPP.DivideBy0()
*/
``````
``````// 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()
*/
``````
``````// Example for the Exception.HResult property.
open System

let secondLevelHResult = 0x81234567

// Create the derived exception class.
// Set HResult for this exception, and include it in the exception message.
type SecondLevelException(message, inner) as this =
inherit Exception(\$"(HRESULT:0x{secondLevelHResult:X8}) %s{message}", inner)
do
this.HResult <- secondLevelHResult

// The following forces a division by 0 and throws a second exception.
try
try
let zero = 0
let ecks = 1 / zero
()
with ex ->
raise (SecondLevelException("Forced a division by 0 and threw a second exception.", ex) )
with ex ->
printfn \$"{ex}"

// This example of Exception.HResult generates the following output.
//
// NDP_UE_FS+SecondLevelException: (HRESULT:0x81234567) Forced a division by 0 and
//  threw a second exception. ---> System.DivideByZeroException: Attempted to divi
// de by zero.
//    at <StartupCode\$fs>.\$NDP_UE_FS.main@()
//    --- End of inner exception stack trace ---
//    at <StartupCode\$fs>.\$NDP_UE_FS.main@()
``````
``````' Example for the Exception.HResult property.
Namespace NDP_UE_VB

' Create the derived exception class.
Class SecondLevelException
Inherits Exception

Private Const SecondLevelHResult As Integer = &H81234567

' Set HResult for this exception, and include it in
' the exception message.
Public Sub New(message As String, inner As Exception)

MyBase.New( String.Format( "(HRESULT:0x{1:X8}) {0}", _
message, SecondLevelHResult ), inner )
HResult = SecondLevelHResult
End Sub
End Class

Module HResultDemo

Sub Main()
' This function forces a division by 0 and throws
' a second exception.
Try
Try
Dim zero As Integer = 0
Dim ecks As Integer = 1 \ zero

Catch ex As Exception
Throw New SecondLevelException( _
"Forced a division by 0 and threw " & _
"a second exception.", ex )
End Try

Catch ex As Exception
Console.WriteLine( ex.ToString( ) )
End Try
End Sub

End Module ' HResultDemo
End Namespace ' NDP_UE_VB

' This example of Exception.HResult generates the following output.
'
' NDP_UE_VB.SecondLevelException: (HRESULT:0x81234567) Forced a division by 0 a
' nd threw a second exception. ---> System.DivideByZeroException: Attempted to
' divide by zero.
'    at NDP_UE_VB.HResultDemo.Main()
'    --- End of inner exception stack trace ---
'    at NDP_UE_VB.HResultDemo.Main()
``````

## Remarques

HRESULT est une valeur 32 bits, composée de trois champs différents : un code de gravité d'erreur, un code de fonctionnalité, et un code d'erreur. Le code de gravité d'erreur indique si la valeur de retour représente les informations, l'avertissement, ou l'erreur. Le code de fonctionnalité identifie la zone du système responsable de l'erreur. Le code d'erreur est un nombre unique affecté pour représenter une exception. Chaque exception est mappée à un HRESULT distinct. Lorsque le code managé lève une exception, le runtime transmet le HRESULT au client COM. Lorsque du code non managé retourne une erreur, le HRESULT est converti en une exception, qui est ensuite levée par le runtime. Pour plus d’informations sur les valeurs HRESULT et leurs exceptions .NET Framework correspondantes, consultez How to: Map HRESULTs and Exceptions. Consultez Valeurs HRESULT courantes dans la documentation Windows pour obtenir la liste des valeurs que vous êtes le plus susceptible de rencontrer.

À compter de .NET Framework 4.5, le setter de la HResult propriété est protégé, tandis que son getter est public. Dans les versions précédentes du .NET Framework, getter et setter sont protégés.