From d6356451ac7826881f518b27739ce6e9c9860a22 Mon Sep 17 00:00:00 2001
From: "jozsef.b@aycode.com" <9Rj@D}fVwBaN>
Date: Sun, 19 May 2024 07:48:43 +0200
Subject: [PATCH] Add ExceptionExtensions...
---
AyCode.Core/AyCode.Core.csproj | 4 ---
AyCode.Core/Extensions/ExceptionExtensions.cs | 26 +++++++++++++++++++
2 files changed, 26 insertions(+), 4 deletions(-)
create mode 100644 AyCode.Core/Extensions/ExceptionExtensions.cs
diff --git a/AyCode.Core/AyCode.Core.csproj b/AyCode.Core/AyCode.Core.csproj
index b703459..3a34c73 100644
--- a/AyCode.Core/AyCode.Core.csproj
+++ b/AyCode.Core/AyCode.Core.csproj
@@ -10,10 +10,6 @@
-
-
-
-
diff --git a/AyCode.Core/Extensions/ExceptionExtensions.cs b/AyCode.Core/Extensions/ExceptionExtensions.cs
new file mode 100644
index 0000000..1269343
--- /dev/null
+++ b/AyCode.Core/Extensions/ExceptionExtensions.cs
@@ -0,0 +1,26 @@
+using AyCode.Utils.Extensions;
+
+namespace AyCode.Core.Extensions;
+
+public static class ExceptionExtensions
+{
+ public static void GetCategoryAndMemberNameFromStackTraceString(this Exception? exception, out string? memberName, out string? categoryName)
+ {
+ categoryName = null;
+ memberName = null;
+
+ if (exception == null) return;
+
+ var stackTraceString = exception.StackTrace ?? exception.InnerException?.StackTrace;
+ if (stackTraceString.IsNullOrWhiteSpace()) return;
+
+ var stackSplit = stackTraceString.Split(" in ");
+ if (stackSplit.Length <= 0) return;
+
+ stackSplit = stackSplit[0].Split('.');
+ if (stackSplit.Length <= 1) return;
+
+ memberName = stackSplit[^1]; //new StackTrace(exception).GetFrame(0)?.GetMethod()?.Name;
+ categoryName = stackSplit[^2]; //exception.Source
+ }
+}
\ No newline at end of file