エンティティ フレームワークを使用してデータベースからデータを取得/設定し、それを MVC Web アプリケーションに渡すサービス レイヤーを作成しています。データベース エラーを Web アプリケーションに返す最適な方法を判断できません。
例外をスローして、Web アプリケーションがそれに応じて処理できるようにする必要がありますか?それとも、データベース アクションが機能したかどうかを伝えるために文字列/ブール値を返す必要がありますか?
ベストプラクティスは何ですか?
ありがとう
エンティティ フレームワークを使用してデータベースからデータを取得/設定し、それを MVC Web アプリケーションに渡すサービス レイヤーを作成しています。データベース エラーを Web アプリケーションに返す最適な方法を判断できません。
例外をスローして、Web アプリケーションがそれに応じて処理できるようにする必要がありますか?それとも、データベース アクションが機能したかどうかを伝えるために文字列/ブール値を返す必要がありますか?
ベストプラクティスは何ですか?
ありがとう
Web アプリケーションからスローされた例外を処理しないでください。データ アクセス レイヤーからでも、自然にスローされる例外を許可してください。このようにして、トラブルシューティング、特に本番段階でのトラブルシューティングが簡単になります。したがって、処理方法:
サービス層でそれらを処理できないか、作成する例外クラスを使用してそれらを正規化できます。例えば:
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;
}
}
必要な情報をプロパティとして例外クラスに追加し、コンストラクターで初期化するだけです。
ほとんどのメソッドがすでに何らかのデータを返しているため、戻り値を使用して例外について上位レベルに通知することは、実際にはベスト プラクティスではありません。