站长网 Windows 为什么win32异常不被c#异常处理机制所捕获

为什么win32异常不被c#异常处理机制所捕获

我有一个 winforms应用程序. Winforms从我们有main()定义的Program.cs开始.我把这个代码放在try-catch块中. [STAThread] static void Main() { try { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Applicati

我有一个
winforms应用程序.
Winforms从我们有main()定义的Program.cs开始.我把这个代码放在try-catch块中.

[STAThread]
    static void Main()
    {
        try
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new frmSplash());
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            if (ex.InnerException != null)
            {
                MessageBox.Show(ex.InnerException.ToString());
            }
        }
    }

每当有一个win32异常时,这个机制就会失败,抛出异常消息并且应用程序崩溃.
我有两个有关此代码的问题:

1)为什么win32异常没有被捕获.

2)在最高级别捕获例外是一个很好的做法.

编辑:正如
Pratik指出的,以下答案仅适用于.NET 1.0和.NET 1.1.从.NET 2.0开始,非CLS异常应该被捕获为
RuntimeWrappedException.

因为Win32异常不是从.NET Exception类派生的.尝试:

try {
} catch (Exception ex) {
    // .NET exception
} catch {
    // native exception
}

有关详细信息,请参阅Catch non-CLSCompliant exceptions in general handlers.

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/server/windows/2021/0522/3823.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部