【发布时间】:2016-07-19 13:13:53
【问题描述】:
在构建用于获取属性值的扩展方法时,我有以下方法签名:
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(),则类型将显示为方法的完全限定名称。
调试时我也无法进入该方法。
谁能解释为什么我无法通过异常停止应用程序,即使这个方法所做的只是抛出异常?
【问题讨论】:
-
请显示您方法的完整代码。如果它是一个枚举器块(使用yield),它只会在您遍历返回的
IEnumerable时执行(并且异常会在那时抛出,而不是在从您的方法返回之前)。并展示你如何调用GetType(),也许你没有在结果上调用它,而是在方法(-group)本身上调用它。