加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 无法从Activator.CreateInstance中捕获异常

发布时间:2020-12-15 07:44:38 所属栏目:百科 来源:网络整理
导读:好吧,我承认这个代码对你来说很奇怪,那是因为它很奇怪.这只是重现行为的代码,而不是我想要使用的代码. class Program{ static void Main(string[] args) { try { Activator.CreateInstance(typeof(Funcint),new object[] { new object(),IntPtr.Zero }); } c
好吧,我承认这个代码对你来说很奇怪,那是因为它很奇怪.这只是重现行为的代码,而不是我想要使用的代码.
class Program
{
    static void Main(string[] args)
    {
        try
        {
            Activator.CreateInstance(typeof(Func<int>),new object[] { new object(),IntPtr.Zero });
        }
        catch
        {
            Console.WriteLine("This won't print!");
        }

        Console.Write("Actually this will not print either!");
        Console.ReadLine();
    }
}

无论我尝试捕获什么异常类型(据我所知抛出的实际异常是ArgumentException),catch块内的代码将不会执行.实际上执行只会停在Activator.CreateInstance行.

解决方法

你用那段代码轰炸了CLR.令人印象深刻.实际的不幸事件是垃圾收集堆的损坏,它通过ExecutionEngineException发出信号.显然,损坏足以阻止CLR执行异常处理程序.

您可以在connect.microsoft.com上报告此信息.但是,该错误在.NET 4.0中得到修复,它会生成正确的异常,ArgumentNullException,“Value不能为null,参数名称:方??法”.解决方法很明显,当它需要非空字符串时不要传递IntPtr.Zero.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读