1

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
}

この問題の別の解決策は何ですか? 何か提案はありますか?

4

1 に答える 1