From 37bfb93fa9be650282a0308947c37dce9e0292ef Mon Sep 17 00:00:00 2001 From: HolographicHat Date: Sun, 25 Sep 2022 13:31:30 +0800 Subject: [PATCH] better exception message --- res/App.Designer.cs | 9 +++++++++ res/App.resx | 3 +++ res/App.zh.resx | 3 +++ src/Utils.cs | 26 ++++++++++++++++++-------- 4 files changed, 33 insertions(+), 8 deletions(-) diff --git a/res/App.Designer.cs b/res/App.Designer.cs index e83958f..5911284 100644 --- a/res/App.Designer.cs +++ b/res/App.Designer.cs @@ -113,6 +113,15 @@ namespace YaeAchievement.res { } } + /// + /// Looks up a localized string similar to Network error ({0}: {1}). + /// + internal static string ExceptionNetwork { + get { + return ResourceManager.GetString("ExceptionNetwork", resourceCulture); + } + } + /// /// Looks up a localized string similar to Export to: ///[0] Cocogoat (https://cocogoat.work/achievement, Default) diff --git a/res/App.resx b/res/App.resx index 7b06bc6..4d66260 100644 --- a/res/App.resx +++ b/res/App.resx @@ -134,4 +134,7 @@ Input a number (0-5): Installing Visual C++ Redistributable... + + Network error ({0}: {1}) + \ No newline at end of file diff --git a/res/App.zh.resx b/res/App.zh.resx index 98c53fc..145b729 100644 --- a/res/App.zh.resx +++ b/res/App.zh.resx @@ -128,4 +128,7 @@ 正在安装 Visual C++ Redistributable... + + 网络错误,请检查网络后重试 ({0}: {1}) + \ No newline at end of file diff --git a/src/Utils.cs b/src/Utils.cs index 6284873..f8f29e9 100644 --- a/src/Utils.cs +++ b/src/Utils.cs @@ -3,6 +3,7 @@ using System.Diagnostics; using System.IO.Pipes; using System.Net; using System.Net.Http.Headers; +using System.Net.Sockets; using System.Runtime.InteropServices; using Microsoft.Win32; using YaeAchievement.AppCenterSDK; @@ -149,14 +150,23 @@ public static class Utils { public static void InstallExceptionHook() { AppDomain.CurrentDomain.UnhandledException += (_, e) => { var ex = e.ExceptionObject; - if (ex is ApplicationException exception) { - Console.WriteLine(exception.Message); - } else { - Console.WriteLine(ex.ToString()); - Console.WriteLine(App.UploadError); - AppCenter.TrackCrash((Exception) e.ExceptionObject); - AppCenter.Upload(); - Environment.Exit(-1); + switch (ex) { + case ApplicationException ex1: + Console.WriteLine(ex1.Message); + break; + case SocketException ex2: + Console.WriteLine(App.ExceptionNetwork, nameof(SocketException), ex2.Message); + break; + case HttpRequestException ex3: + Console.WriteLine(App.ExceptionNetwork, nameof(HttpRequestException), ex3.Message); + break; + default: + Console.WriteLine(ex.ToString()); + Console.WriteLine(App.UploadError); + AppCenter.TrackCrash((Exception) e.ExceptionObject); + AppCenter.Upload(); + Environment.Exit(-1); + break; } }; }