C# 调用动态方法C时的错误处理#

C# 调用动态方法C时的错误处理#,c#,.net,C#,.net,我有一个控制台应用程序,其主要方法如下: public static void Main(string[] commandString) { try { var asm = Assembly.Load("CAT"); var t = asm.GetType("CAT",true,true); var _Adjudication = Activator.CreateInstance(t); t.InvokeMember

我有一个控制台应用程序,其主要方法如下:

public static void Main(string[] commandString)
{
    try
    {
        var asm = Assembly.Load("CAT");
        var t = asm.GetType("CAT",true,true);
        var _Adjudication = Activator.CreateInstance(t);
        t.InvokeMember("NAMEME", BindingFlags.InvokeMethod, null, _Adjudication, new object[] { "Fluffy", 5});
    }
    catch (Exception ex)
    {
        Environment.Exit(99);
    }
}
CAT等级如下所示:

public class CAT
{
    public void NAMEME(string name, int age)
    {
       try
       {
           throw new Exception();
       }
       catch (Exception ex)
       {
           throw ex;
       }
    }
}
当我运行这个程序时,我有一个错误,声明“用户代码未处理异常”。该错误由NAMEME方法的Catch块捕获

如何使异常命中主方法的catch块

PS:我正在使用.NETFramework4.0
PPS:我能够通过捕获TargetInvocationException错误来处理它

这实际上是可行的,我复制了所有的源代码,并在本地正常运行。您提供的代码中有一些输入错误,但我假设它们不存在于dev box上的实际源代码中,正如您所说,您在
CAT
类中遇到了异常。为了让它在主应用程序中点击下一个
catch
,您需要在抛出异常后继续操作——然后它将到达您期望的位置


我无法复制。它适用于我你应该使用throw而不是throw exOf当然它会首先在NAMEME方法中捕获。然后,它将抛出并在主方法中被捕获。继续使用F10逐步完成您的代码。对于动态类,我遇到了相同的问题,有人能告诉我这个问题吗?是的,这里相同,无法在调试模式下重新编译,我可以“继续”它。但是,当我通过命令行参数运行exe时,它不会“继续”退出,错误代码为99。那么,您一定没有告诉我们完整的情况,或者缺少一些内容。我真的复制并粘贴了你的代码(不包括打字错误),然后按预期进行了处理。好吧,我必须去掉我的CAT类中所有的实际代码,因为它与工作相关。。但情况是一样的。我调用一个抛出异常的方法。找不到文件/IO。。无论什么CAT类中的catch块捕获它。但是Main并没有在你发布代码时捕捉到它:它按照你的预期工作(至少对我和@DavidPine都是如此),所以你已经“摆脱”了一些东西,使它无法工作,我们无法猜测。