0

Entity Framework を使用してデータベースからクエリを実行する場合、どの例外をキャッチする必要があり、それらに対して何を行う必要がありますか?

通常catch(Exception)、考えられるすべてのタイプのエラーに対して特定のアクションやフィードバックがないため、使用しますが、これはひどい考えであり、特定の例外をキャッチして処理する必要があることを常に思い出しています! 例:

try
{
    using(MyEntities context = new MyEntities())
    {
        context.Companies.Attach(company);
        ActiveEmployees = company.Employees.Where(x => x.IsActive).ToList();
    }
}
catch(Exception ex)
{
    Feedback(FeedbackType.ApplicationError); // User feedback
    Logger.Log(ex);  // Log the exception
}

EF 例外を処理するための標準/ガイドラインは何ですか?

4

2 に答える 2

1

これらのいくつかのステートメントによってスローされる可能性のある膨大な数の例外があります。データベースへのネットワーク接続がない可能性があります。関連付ける会社は、別のコンテキストに関連付けられている可能性があります。従業員は仮想ではないか、そもそもロードされていないため、null である可能性があります。各メソッドのドキュメントを確認し、何をキャッチする必要があるかを把握する必要があります。

しかし、私の 2 セントは、あなたがそれらすべてをすでにキャッチしているということです。それらをログに記録し、ユーザーに何をしたかを尋ねます。(そして、おそらく自分自身に電子メールを送信しますか?)

しばらくこれを行うと、実際に発生した例外を示すログが作成され、それらをどう処理するかを決定できます。しかし、ほとんどの場合、ユーザーはサイトが「ダウン」しており、n後に復旧することを知りたいだけです。

于 2013-06-28T06:56:35.537 に答える