当前位置:编程学习 > C#/ASP.NET >>

如何捕捉反射的异常

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

希望各位大牛指较!!! --------------------编程问答-------------------- 反射异常的InnerException属性 --------------------编程问答--------------------
引用 1 楼  的回复:
反射异常的InnerException属性


异常都捕捉不到,哪来调用那属性呢。
我用try{}catch(TargetInvocationException ex){}来捕捉,也捕捉不到该异常,在try里面就抛出异常来了,而不会转到catch中去!只有捕捉到了异常才能用ex.InnerException来获取具体的异常吧。 --------------------编程问答-------------------- 晕,怎么过去这么久了,也没有人给我较为准确的答复了。
高手都潜水潜到哪去了。 --------------------编程问答-------------------- 你要反射的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 数组的参数数目不正确。 
--------------------编程问答-------------------- 最近一直忙着其它事,没留意到你的回复!
感谢你的回复! 
不过应该不可能是你所说那种情况“你要反射的dll或者指定文件是不是没重新生成啊”
最起码我在调试过程过程中,已经采用MyModuleBuilder.GetMethod(lpProcName)获取该MethodInfo 对象了,如果你所说的DLL或文件没有重新生成的话,应该是不可能获取该对像的吧。
--------------------编程问答--------------------
引用 1 楼  的回复:
反射异常的InnerException属性
--------------------编程问答-------------------- 一样也不行的。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,