как передать сообщение об ошибке до того, как возникнет исключение - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть следующий код, который получает сообщение об ошибке. Я хочу передать его в строку, прежде чем выдается исключение, это мой код

ValidateError(authDeserialized, "Succeed", "error", "failed"); //the validateError is a function as indicated below
Model.Response= authResponse.Content;

 protected static void ValidateError(dynamic response, string validStatus,string categoryMatch, string message)
        {  
            if (response.result.status != validStatus)
            {
                try
                {
                    var category = response.result.category;
                    if (category == categoryMatch)
                          message=ErrorCodes.MessageFor(code,description);
      //so i get the message back fine here but now how do i pass it back to this line   Model.Response= authResponse.Content; so that it can get saved?
                }
                catch (Exception) { }
                throw new Exception(message ?? "Request was not successfull");
            }
        }

1 Ответ

0 голосов
/ 03 февраля 2020

Поскольку вы уже отправляете message методу ValidateError(), передайте этот параметр как out параметр , он обновит значение message, если вы назначите ему новое значение, затем оно обновит сообщение и будет доступно для внешней среды.

string failureMessage = "failed";
ValidateError(authDeserialized, "Succeed", "error", out failureMessage);
                                                  //^^^ This is what you have to change
//Now you can assign failureMessage to any other value
Model.Response= authResponse.Content;

protected static void ValidateError(dynamic response, string validStatus,string categoryMatch, out string message)
{                                                                                            //^^^ This is what you have to change
      if (response.result.status != validStatus)
      {
          try
          {
               var category = response.result.category;
               if (category == categoryMatch)
                   message=ErrorCodes.MessageFor(code,description);    //so i get the message back fine here but now how do i pass it back to this line   Model.Response= authResponse.Content; so that it can get saved?
          }
          catch (Exception) { }
          throw new Exception(message ?? "Request was not successfull");
      }
}

Таким образом, вы можете присвоить значение сообщению об ошибке перед выдачей ошибки.

Попробуйте онлайн

...