2

ばかげた質問のように聞こえるかもしれませんが、これに関する意見を集めたいと思います。私は、例外メッセージを処理する 2 つのフレーバーをよく目にします。最初にMessage、ユーザーに直接表示する単純なパターンがあります。

try
{
    service.Update();
}
catch (Exception ex)
{
   ShowMessage(ex.Message);
}

例外を処理する別の方法は、厳密に型指定された例外を、「コントローラー」クラス (またはユーザーへの情報のプッシュを処理するコードの一部) によって解釈されるものと見なすことです。

try
{
    service.Update();
}
catch (NetworkException ex)
{
    ShowMessage("Network is unavailable.");
}
catch (Exception ex)
{
    ShowMessage("Something went wrong with the update.");
}

最初のアプローチでは、例外によって使用されるすべてのメッセージ (呼び出しコードによってコンストラクターに渡されるか、厳密に型指定された例外内で管理されるかどうか) が「ユーザー対応」であることが必要です (クリーンで、適切に定式化され、ローカライズされているなど)。2 番目のアプローチでは、この責任をコントローラー コードに移します。さらに、すべての catch ブロックがそれらを正しく解釈できることを確認するために、非常に具体的な厳密に型指定された例外が必要になる場合があります。

では、Exception クラス (C#、Java など) の Message プロパティは誰を対象としているのでしょうか? エンドユーザーですか、それともプログラマーですか?

ありがとうございました、

4

4 に答える 4

2

いいえ、例外の詳細 (Message と StackTrace) はせいぜいログに残すのが最善だと思います。多くの場合、例外テキストは技術的すぎてユーザーに表示できず、実際に悪意のあるユーザーにシステムのハッキングやその他の攻撃に使用される可能性のある情報を提供する可能性があります。

したがって、意味はあるが実際の技術的な詳細ではない、さまざまな例外に対して適切な言い回しを選択します。

もちろん、これが特定の技術者向けの技術ツールである場合は、状況が変わる可能性があります (Toad などのデータベース ツールが Oracle 例外の詳細を表示するように選択するなど)。しかし、一般的に、私はそれを避けます。

于 2013-08-01T16:01:12.267 に答える