Exception.HResult Özellik

Tanım

Belirli bir özel duruma atanan kodlanmış bir sayısal değer olan HRESULT 'yi alır veya ayarlar.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

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

Özellik Değeri

Int32

HRESULT değeri.The HRESULT value.

Örnekler

Aşağıdaki kod örneği, Exception HResult özelliğini oluşturucusunda özel bir değere ayarlayan türetilmiş bir sınıfı tanımlar.The following code example defines a derived Exception class that sets the HResult property to a custom value in its constructor.

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

Açıklamalar

HRESULT, üç farklı alana bölünen 32 bitlik bir değerdir: önem derecesi kodu, tesis kodu ve hata kodu.HRESULT is a 32-bit value, divided into three different fields: a severity code, a facility code, and an error code. Önem derecesi kodu, dönüş değerinin bilgi, uyarı veya hata olduğunu gösterir.The severity code indicates whether the return value represents information, warning, or error. Tesis kodu, hatadan sorumlu sistem alanını tanımlar.The facility code identifies the area of the system responsible for the error. Hata kodu, özel durumu temsil etmek için atanan benzersiz bir sayıdır.The error code is a unique number that is assigned to represent the exception. Her özel durum ayrı bir HRESULT ile eşleştirilir.Each exception is mapped to a distinct HRESULT. Yönetilen kod bir özel durum oluşturduğunda, çalışma zamanı HRESULT 'yi COM istemcisine geçirir.When managed code throws an exception, the runtime passes the HRESULT to the COM client. Yönetilmeyen kod bir hata döndürdüğünde, HRESULT, çalışma zamanı tarafından oluşturulan bir özel duruma dönüştürülür.When unmanaged code returns an error, the HRESULT is converted to an exception, which is then thrown by the runtime. HRESULT değerleri ve bunlara karşılık gelen .NET Framework özel durumları hakkında daha fazla bilgi için bkz. nasıl yapılır: eşleme HRESULTs ve Exceptions.For information about HRESULT values and their corresponding .NET Framework exceptions, see How to: Map HRESULTs and Exceptions. En büyük olasılıkla karşılaştığınız değerlerin bir listesi için bkz. Windows belgelerindeki genel HRESULT değerleri .See Common HRESULT Values in the Windows documentation for a list of the values you are most likely to encounter.

.NET Framework 4,5 ' den başlayarak, HResult özelliğin ayarlayıcısı korunur, ancak alıcısı geneldir.Starting with the .NET Framework 4.5, the HResult property's setter is protected, whereas its getter is public. .NET Framework önceki sürümlerinde hem alıcı hem de ayarlayıcı korunur.In previous versions of the .NET Framework, both getter and setter are protected.

Şunlara uygulanır