Phase 6: Fix swallowed exceptions and cleanup unused usings

- Add debug logging to all empty catch blocks in DecalHarmonyClean.cs setup methods
  (prefix method catches intentionally stay silent to never break other plugins)
- Add error logging to VtankControl.VtSetSetting catch
- Add logging to DecalPatchMethods.ProcessInterceptedMessage catch
- Remove unused usings from PluginCore.cs (System.Diagnostics, System.Drawing,
  System.Text, System.Text.RegularExpressions)
- Flatten redundant nested try/catch in PatchPluginHost

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
erik 2026-02-27 07:59:34 +00:00
parent 0713e96a99
commit 64e690f625
4 changed files with 38 additions and 40 deletions

View file

@ -62,9 +62,9 @@ namespace MosswartMassacre
// PATHWAY 2: Target Host.Actions.AddChatText (what our plugin uses)
PatchHostActions();
}
catch
catch (Exception ex)
{
// Only log if completely unable to apply any patches
AddDebugLog($"ApplyDecalPatches failed: {ex.Message}");
}
}
@ -92,13 +92,15 @@ namespace MosswartMassacre
{
ApplySinglePatch(method, prefixMethodName);
}
catch
catch (Exception ex)
{
AddDebugLog($"PatchHooksWrapper single patch failed ({prefixMethodName}): {ex.Message}");
}
}
}
catch
catch (Exception ex)
{
AddDebugLog($"PatchHooksWrapper failed: {ex.Message}");
}
}
@ -139,16 +141,18 @@ namespace MosswartMassacre
{
ApplySinglePatch(method, prefixMethodName);
}
catch
catch (Exception ex)
{
AddDebugLog($"PatchHostActions single patch failed ({prefixMethodName}): {ex.Message}");
}
}
// PATHWAY 3: Try to patch at PluginHost level
PatchPluginHost();
}
catch
catch (Exception ex)
{
AddDebugLog($"PatchHostActions failed: {ex.Message}");
}
}
@ -159,36 +163,31 @@ namespace MosswartMassacre
{
try
{
// Try to patch CoreManager.Current.Actions if it's different
try
var coreActions = CoreManager.Current?.Actions;
if (coreActions != null && coreActions != PluginCore.MyHost?.Actions)
{
var coreActions = CoreManager.Current?.Actions;
if (coreActions != null && coreActions != PluginCore.MyHost?.Actions)
var coreActionsMethods = coreActions.GetType().GetMethods(BindingFlags.Public | BindingFlags.Instance)
.Where(m => m.Name == "AddChatText" || m.Name == "AddChatTextRaw" || m.Name == "AddStatusText").ToArray();
foreach (var method in coreActionsMethods)
{
var coreActionsMethods = coreActions.GetType().GetMethods(BindingFlags.Public | BindingFlags.Instance)
.Where(m => m.Name == "AddChatText" || m.Name == "AddChatTextRaw" || m.Name == "AddStatusText").ToArray();
foreach (var method in coreActionsMethods)
var parameters = method.GetParameters();
try
{
var parameters = method.GetParameters();
try
{
string prefixMethodName = "AddChatTextPrefixCore" + parameters.Length;
ApplySinglePatch(method, prefixMethodName);
}
catch
{
}
string prefixMethodName = "AddChatTextPrefixCore" + parameters.Length;
ApplySinglePatch(method, prefixMethodName);
}
catch (Exception ex)
{
AddDebugLog($"PatchPluginHost single patch failed: {ex.Message}");
}
}
}
catch
{
}
}
catch
catch (Exception ex)
{
AddDebugLog($"PatchPluginHost failed: {ex.Message}");
}
}
@ -200,9 +199,9 @@ namespace MosswartMassacre
try
{
// Get our prefix method
var prefixMethod = typeof(DecalPatchMethods).GetMethod(prefixMethodName,
var prefixMethod = typeof(DecalPatchMethods).GetMethod(prefixMethodName,
BindingFlags.Static | BindingFlags.Public);
if (prefixMethod != null)
{
// Use UtilityBelt's exact approach
@ -210,8 +209,9 @@ namespace MosswartMassacre
patchesApplied = true;
}
}
catch
catch (Exception ex)
{
AddDebugLog($"ApplySinglePatch failed ({prefixMethodName}): {ex.Message}");
}
}
@ -244,8 +244,9 @@ namespace MosswartMassacre
}
patchesApplied = false;
}
catch
catch (Exception ex)
{
AddDebugLog($"Cleanup failed: {ex.Message}");
}
}
@ -390,8 +391,9 @@ namespace MosswartMassacre
Task.Run(() => WebSocket.SendChatTextAsync(color, text));
}
}
catch
catch (Exception ex)
{
DecalHarmonyClean.AddDebugLog($"ProcessInterceptedMessage failed: {ex.Message}");
}
}

View file

@ -1,13 +1,9 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Timers;
using Decal.Adapter;

View file

@ -72,9 +72,9 @@ namespace MosswartMassacre
return 0;
}
}
catch
catch (Exception ex)
{
// Swallow any errors and signal failure
PluginCore.WriteToChat($"[VTank] SetSetting error ({setting}): {ex.Message}");
return 0;
}