|
- using System;
- using GamecraftModdingAPI.Events;
-
- namespace GamecraftModdingAPI.Utility
- {
- public static class ExceptionUtil
- {
- /// <summary>
- /// Invokes an event in a try-catch block to avoid propagating exceptions.
- /// </summary>
- /// <param name="handler">The event to emit, can be null</param>
- /// <param name="sender">Event sender</param>
- /// <param name="args">Event arguments</param>
- /// <typeparam name="T">Type of the event arguments</typeparam>
- public static void InvokeEvent<T>(EventHandler<T> handler, object sender, T args)
- {
- try
- {
- handler?.Invoke(sender, args);
- }
- catch (Exception e)
- {
- EventRuntimeException wrappedException =
- new EventRuntimeException($"EventHandler with arg type {typeof(T).Name} threw an exception", e);
- Logging.LogWarning(wrappedException.ToString());
- }
- }
- }
- }
|