validationFault、businessFault、internallServerErrorFault など、多くの種類の障害例外をスローしたいと考えています。多くの異なる障害を分離するベストプラクティスとは
validationFault - メソッドへの入力データの検証後のエラー businessFault - ビジネス/ドメインの例外 - 権限がない、ログイン名がフリーでないなど。 internallSerrverError - 未処理の例外
各障害は errorCode に設定されます
シナリオ 1 1 つのタイプの FaultException。BaseException には、validationException のリストを持つプロパティ、Message のプロパティがあります。クライアントはこの FaultException をキャッチし、errorCode を解析して、適切なプロパティからデータを提供します
try
{
}
catch (FaultException<BaseException> ex)
{
// in this place will be all fault exception type. From error code client must have
// dedicated kind of fault - validation, business exception. BaseException will
// be has properly set data for validation or business logic exception.
}
catch (FaultException ex)
{
// internal server error
}
シナリオ 2 個別の障害: ValidationFoult、BusinnesFault、internalServerFault を別の障害に FaultException FaultException
ValidationFault - 検証エラーのデータが含まれます - キー付きディクショナリ - プロパティ名、値 - このプロパティのエラー BusinessFault - メッセージ プロパティが含まれます
クライアントは、このフォールトとは別にキャッチされます。Fault Exception のすべての障害は、内部サーバー エラーになります。
try
{
}
catch (FaultException<ValidationFoult> ex)
{
}
catch (FaultException<BusinessFault> ex)
{
}
catch (FaultException ex)
{
// internal server error
}
この問題の別の解決策は何ですか? 何か提案はありますか?