From 1714da31070fc0c4c445e1b544a2baed425faecf Mon Sep 17 00:00:00 2001 From: Jkorf Date: Mon, 11 Jan 2021 09:28:00 +0100 Subject: [PATCH] More detailed error messages --- CryptoExchange.Net/BaseClient.cs | 36 ++++++++++++++++++++--- CryptoExchange.Net/CryptoExchange.Net.xml | 7 +++++ CryptoExchange.Net/RestClient.cs | 5 ++-- 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/CryptoExchange.Net/BaseClient.cs b/CryptoExchange.Net/BaseClient.cs index 60d6715..e358b89 100644 --- a/CryptoExchange.Net/BaseClient.cs +++ b/CryptoExchange.Net/BaseClient.cs @@ -126,7 +126,8 @@ namespace CryptoExchange.Net } catch (Exception ex) { - var info = $"Deserialize Unknown Exception: {(ex.InnerException?.Message ?? ex.Message)}"; + var exceptionInfo = GetExceptionInfo(ex); + var info = $"Deserialize Unknown Exception: {exceptionInfo}"; return new CallResult(null, new DeserializeError(info, data)); } } @@ -204,7 +205,8 @@ namespace CryptoExchange.Net } catch (Exception ex) { - var info = $"{(requestId != null ? $"[{requestId}] " : "")}Deserialize Unknown Exception: {(ex.InnerException?.Message ?? ex.Message)}"; + var exceptionInfo = GetExceptionInfo(ex); + var info = $"{(requestId != null ? $"[{requestId}] " : "")}Deserialize Unknown Exception: {exceptionInfo}"; log.Write(LogVerbosity.Error, info); return new CallResult(default, new DeserializeError(info, obj)); } @@ -257,9 +259,11 @@ namespace CryptoExchange.Net { if (stream.CanSeek) stream.Seek(0, SeekOrigin.Begin); + + var exceptionInfo = GetExceptionInfo(ex); var data = await ReadStream(stream).ConfigureAwait(false); - log.Write(LogVerbosity.Error, $"{(requestId != null ? $"[{requestId}] " : "")}Deserialize Unknown Exception: {(ex.InnerException?.Message ?? ex.Message)}, data: {data}"); - return new CallResult(default, new DeserializeError($"Deserialize Unknown Exception: {(ex.InnerException?.Message ?? ex.Message)}", data)); + log.Write(LogVerbosity.Error, $"{(requestId != null ? $"[{requestId}] " : "")}Deserialize Unknown Exception: {exceptionInfo}, data: {data}"); + return new CallResult(default, new DeserializeError($"Deserialize Unknown Exception: {exceptionInfo}", data)); } } @@ -412,6 +416,30 @@ namespace CryptoExchange.Net return path; } + + /// + /// Get's all exception messages from a nested exception + /// + /// + /// + public static string GetExceptionInfo(Exception ex) + { + string result = ""; + var padding = 0; + while (true) + { + result += ex.Message.PadLeft(ex.Message.Length + padding) + Environment.NewLine; + + if (ex.InnerException == null) + break; + + ex = ex.InnerException; + padding += 2; + } + + return result; + } + /// /// Dispose /// diff --git a/CryptoExchange.Net/CryptoExchange.Net.xml b/CryptoExchange.Net/CryptoExchange.Net.xml index 8552b75..10c7ec3 100644 --- a/CryptoExchange.Net/CryptoExchange.Net.xml +++ b/CryptoExchange.Net/CryptoExchange.Net.xml @@ -317,6 +317,13 @@ The values to fill + + + Get's all exception messages from a nested exception + + + + Dispose diff --git a/CryptoExchange.Net/RestClient.cs b/CryptoExchange.Net/RestClient.cs index d3372fa..c3646df 100644 --- a/CryptoExchange.Net/RestClient.cs +++ b/CryptoExchange.Net/RestClient.cs @@ -266,8 +266,9 @@ namespace CryptoExchange.Net } catch (HttpRequestException requestException) { - log.Write(LogVerbosity.Warning, $"[{request.RequestId}] Request exception: " + (requestException.InnerException?.Message ?? requestException.Message)); - return new WebCallResult(null, null, default, new ServerError(requestException.Message)); + var exceptionInfo = GetExceptionInfo(requestException); + log.Write(LogVerbosity.Warning, $"[{request.RequestId}] Request exception: " + exceptionInfo); + return new WebCallResult(null, null, default, new WebError(exceptionInfo)); } catch (TaskCanceledException canceledException) {