如何从具有泛型返回类型的方法中引发异常
本文关键字:方法 异常 返回类型 泛型 | 更新日期: 2023-09-27 17:57:34
在构建用于获取属性值的扩展方法时,我有以下方法签名:
public static IEnumerable<TValue> GetAttributeValues<TAttribute, TValue>(
this Type type,
string methodName,
Type[] parameterTypes,
Func<TAttribute, TValue> valueSelector,
bool inherit = false) where TAttribute : Attribute
然而,在测试过程中,我发现在这个方法中不能有效地抛出异常。如果我抛出ArgumentException
的实例,执行过程似乎会忽略它,即,则异常不会出现。调用方法中的try... catch
不会捕获任何内容。
如果我根据方法调用的结果调用GetType()
,则类型将显示为方法的完全限定名称。
在调试时,我也无法介入该方法。
有人能解释为什么我不能用异常来停止应用程序吗?即使这个方法只抛出了一个异常?
因为您的扩展方法正在返回一个IEnumerable<T>
,所以您需要对它调用类似ToArray
或First
的东西,否则它将无法枚举。