英語で読む

次の方法で共有


Exception.HResult プロパティ

定義

特定の例外に割り当てられているコード化数値である HRESULT を取得または設定します。

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

プロパティ値

HRESULT 値。

次のコード例では、 プロパティをコンストラクターのカスタム値に設定HResultする派生Exceptionクラスを定義します。

// 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ビット値で、3つの異なるフィールド(重大度コード、機能コード、およびエラーコード)に分割されています。 重大度コードは、戻り値が情報、警告、またはエラーのどれを表しているかを示します。 機能コードは、エラーの原因となっているシステムの領域を識別します。 エラーコードは、例外を表すために割り当てられた一意の番号です。 各例外は個別の HRESULT にマッピングされます。 マネージコードが例外をスローすると、ランタイムは HRESULT を COM クライアントに渡します。 アンマネージコードがエラーを返すと、HRESULTが例外に変換され、ランタイムによってスローされます。 HRESULT値とそれに対応する .NET Framework の例外についてはについては Hresult に例外を割り当てる方法 を参照してください。 発生する可能性が最も高い値のリストについては、Windowsドキュメントの 共通の HRESULT 値 を参照してください。

.NET Framework 4.5 以降では、HResultプロパティのセッターは保護されますが、getter はパブリックです。 以前のバージョンの.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, 8, 9
.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

こちらもご覧ください