public static void Main()
Console.WriteLine("Value1".ToEnumStrict<Test>(new Exception("Value not supprted")));
Console.WriteLine("Value".ToEnumStrict<Test>(new Exception("Value not supprted")));
public static class EnumExtenstions
public static T ToEnumStrict<T>(this string str, Exception onFail) where T : struct, Enum
if (Enum.TryParse<T>(str, out var enumValue) && Enum.IsDefined(enumValue))