gpt4 book ai didi

c# - 为什么win32异常没有被c#异常处理机制捕获

转载 作者:可可西里 更新时间:2023-11-01 07:54:17 25 4
gpt4 key购买 nike

我有一个 winforms 应用程序。Winforms 从 Program.cs 开始,我们在其中定义了 main()。我已将这段代码放在 try-catch block 中。

 [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 异常时,此机制就会失效并抛出未处理的异常消息并导致应用程序崩溃。
我有 2 个关于此代码的问题:

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想要查询更多的信息。

关于c# - 为什么win32异常没有被c#异常处理机制捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1205426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com