如何捕捉反射的异常

零壹世界 2012-04-29 05:24:36
问题:
1、如何捕捉反射函数的参数不对时的异常?
2、当参数个数超过原函数的参数个数时,竟然不会报异常(当函数需要二个整型参数时,我传入二个整形参数,再加上N个任意类型的参数,都将不会报异常)?
描述为:
动态库有一个函数:Max,函数有二个参数,均为整数型;
当用MyMethodInfo.Invoke(null, ObjArray_Parameter)调用动态库的函数时,参数数组ObjArray_Parameter,却只传一个参数进去;此时将会抛出异常;但是,无论我采用try{}catch(Exception ex){}来捕捉,还是采用System.Reflection类下的异常类(TargetInvocationException,TargetParameterCountException等)来捕捉均无法捕捉到该异常。
我应该如何捕捉该异常;
如果,反射函数中还有其它的异常,如所传参数类型不对或其它的时候,又应该如何捕捉?

希望各位大牛指较!!!
...全文
145 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
零壹世界 2012-06-06
  • 打赏
  • 举报
回复
一样也不行的。
anzhiqiang_touzi 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
反射异常的InnerException属性
[/Quote]
零壹世界 2012-05-16
  • 打赏
  • 举报
回复
最近一直忙着其它事,没留意到你的回复!
感谢你的回复!
不过应该不可能是你所说那种情况“你要反射的dll或者指定文件是不是没重新生成啊”
最起码我在调试过程过程中,已经采用MyModuleBuilder.GetMethod(lpProcName)获取该MethodInfo 对象了,如果你所说的DLL或文件没有重新生成的话,应该是不可能获取该对像的吧。
蔡袅 2012-05-04
  • 打赏
  • 举报
回复
你要反射的dll或者指定文件是不是没重新生成啊,我经常遇到这样不生成就用原始的,反射对于参数类型个数检验是很严格的

public Object Invoke(
Object obj,
Object[] parameters
)


参数

obj
类型:System.Object
对其调用方法或构造函数的对象。 如果方法是静态的,则忽略此参数。 如果构造函数是静态的,则此参数必须为 null 或定义该构造函数的类的实例。

parameters
类型:System.Object[]
调用的方法或构造函数的参数列表。 这是一个对象数组,这些对象与要调用的方法或构造函数的参数具有相同的数量、顺序和类型。 如果没有任何参数,则 parameters 应为 null。
如果此实例所表示的方法或构造函数采用 ref 参数(在 Visual Basic 中为 ByRef),使用此函数调用该方法或构造函数时,该参数不需要任何特殊特性。 如果数组中的对象未用值来显式初始化,则该对象将包含该对象类型的默认值。 对于引用类型的元素,该值为 null。 对于值类型的元素,该值为 0、0.0 或 false,具体取决于特定的元素类型。

如果参数数目不匹配会报错:
TargetParameterCountException parameters 数组的参数数目不正确。

零壹世界 2012-05-04
  • 打赏
  • 举报
回复
晕,怎么过去这么久了,也没有人给我较为准确的答复了。
高手都潜水潜到哪去了。
零壹世界 2012-04-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

反射异常的InnerException属性
[/Quote]

异常都捕捉不到,哪来调用那属性呢。
我用try{}catch(TargetInvocationException ex){}来捕捉,也捕捉不到该异常,在try里面就抛出异常来了,而不会转到catch中去!只有捕捉到了异常才能用ex.InnerException来获取具体的异常吧。
xboxeer 2012-04-29
  • 打赏
  • 举报
回复
反射异常的InnerException属性

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧