15

これまで、コードからスローされた例外を表示したいときはいつでも、次を使用していました。

try
{
    // Code that may throw different exceptions
}
catch (Exception ex)
{
    MessageBox.Show(ex.ToString());         
}

上記のコードは、主にデバッグの目的で使用しました。例外の正確な種類と、それに応じて例外がスローされた理由を確認するためです。

現在作成中のプロジェクトでは、いくつかのtry-catch句を使用しています。例外が発生した場合にポップアップ メッセージを表示して、より「ユーザー フレンドリー」にしたいと考えています。「ユーザーフレンドリー」とは、上記のコードで現在表示されているNull Reference ExceptionArgument Out Of Range Exceptionなどのフレーズを非表示にするメッセージを意味します。

ただし、メッセージを作成した例外の種類に関する関連情報を引き続き表示したいと考えています。

以前のニーズに従って、スローされた例外の表示出力をフォーマットする方法はありますか?

4

6 に答える 6

3

Exception.Messageは、 よりも (完全ではありませんが) ユーザーフレンドリーなメッセージを提供しますException.ToString()。この不自然な例を考えてみましょう:

try
{
    throw new InvalidOperationException();
}
catch(InvalidOperationException ex)
{
    Console.WriteLine(ex.ToString());
}

Message表示されるメッセージよりも単純なメッセージが生成さToString()れますが、それでもユーザーにとってはあまり意味がありません。手動で例外を飲み込み、この問題を解決するのに役立つカスタム メッセージをユーザーに表示するのに、それほど労力はかかりません。

try
{
    using (StreamReader reader = new StreamReader("fff")){}
}
catch(ArgumentException argumentEx)
{
    Console.WriteLine("The path that you specified was invalid");
    Debug.Print(argumentEx.Message);

}
catch (FileNotFoundException fileNotFoundEx)
{
    Console.WriteLine("The program could not find the specified path");
    Debug.Print(fileNotFoundEx.Message);
}

Debug.Printデバッグ目的で、テキストを即時ウィンドウまたは出力ウィンドウ (VS 設定に応じて) に出力するために使用することもできます。

于 2013-04-22T10:56:54.197 に答える
2

Exception.Messageプロパティを使用して、現在の例外を説明するメッセージを取得できます。

  catch (Exception ex)
   {
     MessageBox.Show(ex.Messagge());         
   }
于 2013-04-22T10:57:32.343 に答える
1

秘訣は、例外の Message メソッドを使用することです。

catch (Exception ex)
{
    MessageBox.Show(this, ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
于 2021-01-21T06:18:26.783 に答える