相关疑难解决方法(0)

为什么.NET4.0无法捕获AccessViolationException

非常有趣的是,以下C#代码将在.NET4.0上崩溃,但在.NET2.0上运行良好.

C#代码

class Program
{
    static void Main(string[] args)
    {
        try
        {
            ExceptionTest();
            Console.WriteLine("Done!");
        }
        catch (Exception e)
        {
            Console.WriteLine("Error !!!");
            Console.WriteLine(e.Message);
        }
    }

    [DllImport("badapp")]
    private static extern int ExceptionTest();
}
Run Code Online (Sandbox Code Playgroud)

C++代码

extern "C" __declspec(dllexport) int ExceptionTest()
{
    IUnknown* pUnk = NULL;
    pUnk->AddRef();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果针对.NET2.0编译上面的C#代码,一切正常.只针对.NET4.0进行编译会使其在运行时崩溃.

我怀疑自.NET4.0以来系统异常捕获机制已经改变.有任何想法吗?

c# c++ access-violation

28
推荐指数
1
解决办法
1万
查看次数

标签 统计

access-violation ×1

c# ×1

c++ ×1