0

エンティティ フレームワークを使用してデータベースからデータを取得/設定し、それを MVC Web アプリケーションに渡すサービス レイヤーを作成しています。データベース エラーを Web アプリケーションに返す最適な方法を判断できません。

例外をスローして、Web アプリケーションがそれに応じて処理できるようにする必要がありますか?それとも、データベース アクションが機能したかどうかを伝えるために文字列/ブール値を返す必要がありますか?

ベストプラクティスは何ですか?

ありがとう

4

2 に答える 2

1

Web アプリケーションからスローされた例外を処理しないでください。データ アクセス レイヤーからでも、自然にスローされる例外を許可してください。このようにして、トラブルシューティング、特に本番段階でのトラブルシューティングが簡単になります。したがって、処理方法:

  1. スローされた例外にはカスタム エラー ページを使用します。
  2. HttpModule を使用して、トラブルシューティングのために例外をログに記録します。ELMAH、loggin モジュールは、ASP.NET MVC と完全に連携し、Web 上でログを表示できます。
于 2012-08-03T17:17:21.233 に答える
1

サービス層でそれらを処理できないか、作成する例外クラスを使用してそれらを正規化できます。例えば:

public class DatabaseException: Exception
{
    public string TableName { get; private set; }

    public DatabaseException(string tableName, Exception innerException)
        :base("There a database error occured.", innerException)
    {
        TableName = tableName;
    }
}

必要な情報をプロパティとして例外クラスに追加し、コンストラクターで初期化するだけです。

ほとんどのメソッドがすでに何らかのデータを返しているため、戻り値を使用して例外について上位レベルに通知することは、実際にはベスト プラクティスではありません。

于 2012-08-02T17:17:19.157 に答える