C#反射问题,Invoke调用的方法异常处理
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Test1 test = new Test1();
foreach (var item in test.GetType().GetMethods())
{
try
{
item.Invoke(test, null);
}
catch (Exception)
{
MessageBox.Show("捕获异常");
}
}
}
public class Test1
{
public void method1()
{
throw new Exception("有异常");
}
public void method2()
{
throw new NotImplementedException();
}
}
}
如上所述:我想捕获到Invoke所调用的方法的异常。
如果直接try catch是无法捕获到异常,异常抛出到托管代码那边去了。
求哪位大神看看,给点提示。感激不尽!
c#
exception
Invoke
反射
异常捕获
------解决方案--------------------试了你的代码,可以捕获到异常,没有到托管代码里啊
------解决方案--------------------因为Invoke调用函数好比是你在一个新的线程上执行函数。所以函数内的异常会先抛到运行时,然后才是你Invoke的层,然而你没有捕获运行时异常,故程序会崩溃,那你Invoke的catch就没机会继续捕获异常了,要解决你的这个问题也很简单。
找到Program.cs文件,捕获运行时异常,修改成如下即可。你就能看到异常捕获的顺序了。
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
&nb