【发布时间】:2012-04-29 10:03:53
【问题描述】:
我正在使用 DLLImport 从 C# 应用程序调用 GhostScript 库。
所以我有一些这样的代码,
[DllImport("gsdll32.dll", EntryPoint = "gsapi_init_with_args")]
private static extern int gsapi_init_with_args(IntPtr instance, int argc, IntPtr argv);
try
{
intReturn = gsapi_init_with_args(intGSInstanceHandle, intElementCount, intptrArgs);
}
catch (Exception ex)
{
throw new ApplicationException(ex.Message, ex);
}
我将查看 GhostScript 源代码,它是用 C 或 C++ 编写的,但总的来说,我想知道如果 GhostScript 代码抛出未处理的异常会发生什么?那会被那里的渔获物抓住吗,还是必须看起来像这样,
catch
{
// blah
}
【问题讨论】:
-
这是 .NET 4.0 是的。不过我想知道,在这种情况下,这个问题可能有点毫无意义。我看到 GhostScript 是用 C 编写的,所以它不应该抛出任何异常,对吧?无论如何,最好知道 catch 对 C++ 异常有什么作用。
-
即使dll不可以,操作系统也可以抛出异常。
-
我正在使用不同的 dll,并且在过去的 catch (Exception e) 上引发了异常问题,尽管 Microsoft 表示应该可以。 msdn.microsoft.com/en-us/library/ms404228(v=vs.100).aspx