feat: Enhance initialization error handling and add console command for reporting exceptions

This commit is contained in:
Neil Dorin 2026-04-13 21:11:35 -06:00
parent 71cf7ef4df
commit 5f4a35d425

View file

@ -126,6 +126,8 @@ public class ControlSystem : CrestronControlSystem, ILoadConfig, IInitialization
} }
private void StartSystem(object preventInitialization) private void StartSystem(object preventInitialization)
{
try
{ {
DeterminePlatform(); DeterminePlatform();
@ -192,7 +194,7 @@ public class ControlSystem : CrestronControlSystem, ILoadConfig, IInitialization
"getroutingports", "Reports all routing ports, if any. Requires a device key", ConsoleAccessLevelEnum.AccessOperator); "getroutingports", "Reports all routing ports, if any. Requires a device key", ConsoleAccessLevelEnum.AccessOperator);
CrestronConsole.AddNewConsoleCommand(PrintInitializationExceptions, CrestronConsole.AddNewConsoleCommand(PrintInitializationExceptions,
"getinitializationexceptions", "Reports any exceptions that occurred during initialization", ConsoleAccessLevelEnum.AccessOperator); "getinitexceptions", "Reports any exceptions that occurred during initialization", ConsoleAccessLevelEnum.AccessOperator);
DeviceManager.AddDevice(new EssentialsWebApi("essentialsWebApi", "Essentials Web API")); DeviceManager.AddDevice(new EssentialsWebApi("essentialsWebApi", "Essentials Web API"));
@ -207,6 +209,12 @@ public class ControlSystem : CrestronControlSystem, ILoadConfig, IInitialization
SystemMonitor.ProgramInitialization.ProgramInitializationComplete = true; SystemMonitor.ProgramInitialization.ProgramInitializationComplete = true;
} }
} }
catch (Exception e)
{
InitializationExceptions.Add(e);
Debug.LogFatal(e, "FATAL INITIALIZE ERROR. System is in an inconsistent state");
}
}
/// <summary> /// <summary>
/// Determines if the program is running on a processor (appliance) or server (VC-4). /// Determines if the program is running on a processor (appliance) or server (VC-4).
@ -277,6 +285,7 @@ public class ControlSystem : CrestronControlSystem, ILoadConfig, IInitialization
} }
catch (Exception e) catch (Exception e)
{ {
InitializationExceptions.Add(e);
Debug.LogMessage(e, "Unable to determine platform due to exception"); Debug.LogMessage(e, "Unable to determine platform due to exception");
} }
} }
@ -331,7 +340,8 @@ public class ControlSystem : CrestronControlSystem, ILoadConfig, IInitialization
} }
catch (Exception e) catch (Exception e)
{ {
Debug.LogMessage(e, "FATAL INITIALIZE ERROR. System is in an inconsistent state"); InitializationExceptions.Add(e);
Debug.LogFatal(e, "FATAL INITIALIZE ERROR. System is in an inconsistent state");
} }
finally finally
{ {