From 0c2606609184090e582795ff2bab98f1fc4eb000 Mon Sep 17 00:00:00 2001 From: djbadders <34887832+djbadders@users.noreply.github.com> Date: Sat, 21 Sep 2019 23:43:13 +0100 Subject: [PATCH] Fixed issues with exception handling for web calls --- Core/MarketAnalyzer/BaseAnalyzer.cs | 45 ++++++++++++++++------------- Core/MarketAnalyzer/Binance.cs | 2 +- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/Core/MarketAnalyzer/BaseAnalyzer.cs b/Core/MarketAnalyzer/BaseAnalyzer.cs index f6deb22..b007201 100644 --- a/Core/MarketAnalyzer/BaseAnalyzer.cs +++ b/Core/MarketAnalyzer/BaseAnalyzer.cs @@ -48,26 +48,31 @@ namespace Core.MarketAnalyzer catch (WebException ex) { log.DoLogCritical(string.Format("Error whilst calling {0} \nError: {1}", url, ex.Message), ex); - // Error calling the service but we got a response so dump it. - string responseString = string.Empty; - var encoding = httpResponse.CharacterSet == "" ? Encoding.UTF8 : Encoding.GetEncoding(httpResponse.CharacterSet); - using (var stream = httpResponse.GetResponseStream()) + if (ex.Response != null) { - var reader = new StreamReader(stream, encoding); - responseString = reader.ReadToEnd(); + // Error calling the service but we got a response so dump it. + string responseString = string.Empty; + var response = ((HttpWebResponse)ex.Response); + var encoding = response.CharacterSet == "" ? Encoding.UTF8 : Encoding.GetEncoding(response.CharacterSet); + + using (var stream = response.GetResponseStream()) + { + var reader = new StreamReader(stream, encoding); + responseString = reader.ReadToEnd(); + } + + log.DoLogCritical(String.Format("{0} - Response: ({1}) {2} : {3}", ex.Message, response.StatusCode, response.StatusDescription, responseString), ex); } - log.DoLogCritical(String.Format("{0} - Response: ({1}) {2} : {3}", ex.Message, httpResponse.StatusCode, httpResponse.StatusDescription, responseString), ex); - - throw ex; + throw; } catch (Exception ex) { log.DoLogCritical(ex.Message, ex); - } - return jsonObject; + throw; + } } public static Newtonsoft.Json.Linq.JObject GetSimpleJsonObjectFromURL(string url, LogHelper log, bool swallowException) @@ -351,15 +356,15 @@ namespace Core.MarketAnalyzer } public static List GetMarketTrendChanges( - string platform, - string mainMarket, - MarketTrend marketTrend, - List marketList, - Dictionary recentMarkets, - Dictionary trendMarkets, - string sortBy, - bool isGlobal, - PTMagicConfiguration systemConfiguration, + string platform, + string mainMarket, + MarketTrend marketTrend, + List marketList, + Dictionary recentMarkets, + Dictionary trendMarkets, + string sortBy, + bool isGlobal, + PTMagicConfiguration systemConfiguration, LogHelper log) { List result = new List(); diff --git a/Core/MarketAnalyzer/Binance.cs b/Core/MarketAnalyzer/Binance.cs index 1475824..7d75e28 100644 --- a/Core/MarketAnalyzer/Binance.cs +++ b/Core/MarketAnalyzer/Binance.cs @@ -416,7 +416,7 @@ namespace Core.MarketAnalyzer Dictionary tickMarkets = new Dictionary(); foreach (string key in markets.Keys) { - List tickRange = marketTicks[key].FindAll(t => t.Time <= tickTime); + List tickRange = marketTicks[key] != null ? marketTicks[key].FindAll(t => t.Time <= tickTime) : new List(); if (tickRange.Count > 0) {