【发布时间】:2015-01-15 10:18:17
【问题描述】:
大家好,我想弄清楚是否可以在托管代码中捕获(或至少抑制)各种非托管异常?我已经在这里看到了很多问题,但我仍然不清楚,哪些类型的异常是可捕获的,哪些不是?
作为一个例子,我制作了一个执行被零除的 C++ 程序:
printf("Hello from unmanaged code\n");
int a = 0;
printf("%d\n", 10 / a);
return 0;
还有一个 C# 应用程序
try
{
Process p = new Process();
p.StartInfo.FileName = "test.exe";
p.Start();
p.WaitForExit();
Console.WriteLine("success");
}
catch (Win32Exception)
{
Console.WriteLine("1");
}
catch(ExternalException)
{
Console.WriteLine("2");
}
catch
{
Console.WriteLine("3");
}
这里的catch都没有触发,出现程序终止窗口,关闭后C#程序继续正常执行。
【问题讨论】:
标签: c# c++ exception exception-handling