0
private void AccountValidations(CreateAccountPayload payload) {
  if (string.IsNullOrEmpty(payload.Note)) {
    throw new ArgumentException($ "Note cannot be empty");
  }
  if (string.IsNullOrEmpty(payload.AccountName)) {
    throw new ArgumentException($ "Account Name cnnot be Empty");
  }
  if (string.IsNullOrEmpty(payload.Type)) {
    throw new ArgumentException($ "Account Type cnnot be Empty");
  }
}

我想要一次所有异常消息,例如:在有效负载对象中,如果我不提供AccountNameand Note。它应该报告我注意不能为空帐户名不能为空我该怎么做?

我想制作一个所有这些消息的列表,然后抛出一个Agregateexception. 我怎样才能做到这一点?

4

1 回答 1

1

好吧,要验证您的身份,CreateAccountPayload您可以执行以下操作。

A. 您确实可以抛出AggregateException异常,但首先您需要将异常添加到列表中。

var exceptions = new List<Exception>();
if (string.IsNullOrEmpty(payload.Note)) {
exceptions.Add(new ArgumentException($ "Note cannot be empty"));
}
 if (string.IsNullOrEmpty(payload.AccountName)) {
exceptions.Add(new ArgumentException($ "Account Name cnnot be Empty"));
}
if (string.IsNullOrEmpty(payload.Type)) {
exceptions.Add(new ArgumentException($ "Account Type cnnot be Empty"));
}
if (exceptions.Any()) throw new AggregateException(
    "Encountered errors while validating.",
    exceptions);

外部代码应该捕获异常。

catch (AggregateException e)

您只需要检查InnerExceptions属性并像这样构造错误字符串

string.Join(" and ", e.InnerExceptions.Select(ex => ex.Message));

B. 另一种选择可能如下。您可以将消息(不抛出异常)添加到字符串列表中,然后返回它。如果列表为空 - 验证通过。

于 2022-02-16T05:36:54.727 回答