英語で読む

次の方法で共有


Exception.Message プロパティ

定義

現在の例外を説明するメッセージを取得します。

public virtual string Message { get; }

プロパティ値

例外の原因を示すエラー メッセージまたは空の文字列 ("") です。

実装

次のコード例では、 をスローしてから例外を Exception キャッチし、 プロパティを使用して例外のテキスト メッセージを Message 表示します。

// Example for the Exception.HelpLink, Exception.Source,
// Exception.StackTrace, and Exception.TargetSite properties.
using System;

namespace NDP_UE_CS
{
    // Derive an exception; the constructor sets the HelpLink and
    // Source properties.
    class LogTableOverflowException : Exception
    {
        const string overflowMessage = "The log table has overflowed.";

        public LogTableOverflowException(
            string auxMessage, Exception inner ) :
                base( String.Format( "{0} - {1}",
                    overflowMessage, auxMessage ), inner )
        {
            this.HelpLink = "https://learn.microsoft.com";
            this.Source = "Exception_Class_Samples";
        }
    }

    class LogTable
    {
        public LogTable( int numElements )
        {
            logArea = new string[ numElements ];
            elemInUse = 0;
        }

        protected string[ ] logArea;
        protected int       elemInUse;

        // The AddRecord method throws a derived exception if
        // the array bounds exception is caught.
        public    int       AddRecord( string newRecord )
        {
            try
            {
                logArea[ elemInUse ] = newRecord;
                return elemInUse++;
            }
            catch( Exception e )
            {
                throw new LogTableOverflowException(
                    String.Format( "Record \"{0}\" was not logged.",
                        newRecord ), e );
            }
        }
    }

    class OverflowDemo
    {
        // Create a log table and force an overflow.
        public static void Main()
        {
            LogTable log = new LogTable( 4 );

            Console.WriteLine(
                "This example of \n   Exception.Message, \n" +
                "   Exception.HelpLink, \n   Exception.Source, \n" +
                "   Exception.StackTrace, and \n   Exception." +
                "TargetSite \ngenerates the following output." );

            try
            {
                for( int count = 1; ; count++ )
                {
                    log.AddRecord(
                        String.Format(
                            "Log record number {0}", count ) );
                }
            }
            catch( Exception ex )
            {
                Console.WriteLine( "\nMessage ---\n{0}", ex.Message );
                Console.WriteLine(
                    "\nHelpLink ---\n{0}", ex.HelpLink );
                Console.WriteLine( "\nSource ---\n{0}", ex.Source );
                Console.WriteLine(
                    "\nStackTrace ---\n{0}", ex.StackTrace );
                Console.WriteLine(
                    "\nTargetSite ---\n{0}", ex.TargetSite );
            }
        }
    }
}

/*
This example of
   Exception.Message,
   Exception.HelpLink,
   Exception.Source,
   Exception.StackTrace, and
   Exception.TargetSite
generates the following output.

Message ---
The log table has overflowed. - Record "Log record number 5" was not logged.

HelpLink ---
https://learn.microsoft.com

Source ---
Exception_Class_Samples

StackTrace ---
   at NDP_UE_CS.LogTable.AddRecord(String newRecord)
   at NDP_UE_CS.OverflowDemo.Main()

TargetSite ---
Int32 AddRecord(System.String)
*/

注釈

エラー メッセージは、例外を処理している開発者を対象とします。 プロパティの Message テキストではエラーを完全に説明し、可能な場合はエラーを修正する方法も説明する必要があります。 最上位レベルの例外ハンドラーでは、エンド ユーザーにメッセージが表示される可能性があるため、文法的に正しいことと、メッセージの各文がピリオドで終わることを確認する必要があります。 疑問符や感嘆符は使用しないでください。 アプリケーションでローカライズされた例外メッセージを使用する場合は、それらが正確に翻訳されていることを確認する必要があります。

重要

適切なアクセス許可を確認せずに、例外メッセージで機密情報を開示しないでください。

プロパティの Message 値は、 によって ToString返される情報に含まれます。 プロパティは Message 、 を作成する場合にのみ設定されます Exception。 現在のインスタンスのコンストラクターにメッセージが指定されていない場合、システムは現在のシステム カルチャを使用して書式設定された既定のメッセージを提供します。

注意 (継承者)

プロパティは Message 、メッセージの内容または形式を制御する必要があるクラスでオーバーライドされます。 通常、アプリケーション コードは、キャッチされた例外に関する情報を表示する必要がある場合に、このプロパティにアクセスします。

エラー メッセージはローカライズする必要があります。

適用対象

製品 バージョン
.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