将属性反射用于SetValue时,该属性将引发TargetInvocationException。但是,由于对SetValue的调用是一个调用,因此异常将被捕获并且不会在属性中处理。有没有办法处理属性中的目标异常,并只在主程序中抛出?SetValue属性反射异常处理问题
我想这个抛出就像我只是做了一个方法调用,而不是一个调用。
编辑澄清:
我遇到的问题是,反映类中,我得到的是说“异常是由用户代码未处理的”调试消息。我必须'继续'调试会话,内部异常是'真正'的异常。这只是预料之中吗?我不想被警告(并且我不想隐藏警告),我想要代码来修复警告。
public class reflect
{
private int _i;
public int i
{
get { return _i; }
set
{
try{throw new Exception("THROWN");}
catch (Exception ex)
{ // Caught here ex.Message is "THROWN"
throw ex; // Unhandled exception error DONT WANT THIS
}
}
}
}
class Program
{
static void Main(string[] args)
{
reflect r = new reflect();
try
{
r.GetType().GetProperty("i").SetValue(r, 3, null);
}
catch(Exception ex)
{ // Caught here, Message "Exception has been thrown by the target of an invocation"
// InnerMessage "THROWN"
// WANT THIS Exception, but I want the Message to be "THROWN"
}
}
}
这不是正常意义上的警告(即在编译时显示的东西) - 它只是调试器入侵(在第一个版本中,它根本不是*清楚)。我相信这是另一个SO问题的重复,但它可能很难找到。 –