What about throw ex? With Api Response
In my case I have a httpresponse that doesn't fail to make a response but fails to get the results which in turn doesnt map out to the model. This mapping is a soft rule, where something might map and if they don't the api says why. In that case its a 200 response code and I don't get an exception either.
https://stackoverflow.com/questions/2999298/difference-between-throw-and-throw-new-exception
public bool SubmitOrder(Order objOrder, ref int iID, ref OrderResponse objOrderResponse, ref string sRtnMsg) {
try {
var contJson = JsonConvert.SerializeObject(objOrder);
var jsFormatted = JToken.Parse(contJson).ToString(Formatting.Indented);
Log.Trace("Submitting Order: With {0}", jsFormatted);
var flagError = false;
var error = "";
var accessToken = GetToken();
Client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
HttpRequestMessage requestNew = new HttpRequestMessage(HttpMethod.Post, "{url}/api/Token/") {
Content = new StringContent(JsonConvert.SerializeObject(objOrder), Encoding.UTF8, "application/json")
};
var postOrder = Task.Run(() => Client.PostAsync("{url}/", requestNew.Content)
.ContinueWith(responseTask => {
var contJsonReturn = JsonConvert.SerializeObject(responseTask.Result.Content.ReadAsStringAsync().Result);
var jsFormattedReturn = JToken.Parse(contJsonReturn).ToString(Formatting.Indented);
Log.Trace("Returned Order: With {0}", responseTask.Result.Content,
responseTask.Result.Content.ReadAsStringAsync());
if (!responseTask.Result.IsSuccessStatusCode) {
error = responseTask.Result.Content.ReadAsStringAsync().Result;
Log.Error(error);
flagError = true;
}
return responseTask.Result.Content.ReadAsAsync<OrderResponse>(new[] { new JsonMediaTypeFormatter() }).Result;
}));
postOrder.Wait();
if (!flagError) {
iID = postOrder.Result.ReadOnly.OrderId;
objOrderResponse = postOrder.Result;
return true;
} else {
sRtnMsg = JsonConvert.SerializeObject(new { error = error });
return false;
}
} catch (Exception ex) {
Log.Error(ex);
sRtnMsg = ex.Message;
return false;
}
}
Notes