使用DLLImport时,异常如何工作

时间:2012-04-18 02:08:54

标签: c# c++ exception

我正在使用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);
}

我将看一下用C或C ++编写的GhostScript源代码,但总的来说我想知道如果GhostScript代码抛出未处理的异常会发生什么?那会被捕获,或者它必须看起来像这样,

catch
{
    // blah
}

1 个答案:

答案 0 :(得分:2)

它不会抛出异常,你打算查看返回代码。 http://pages.cs.wisc.edu/~ghost/doc/AFPL/7.04/API.htm#return_codes

C编程的标准方法,错误返回非零代码,有时会进行第二次API调用以检索错误的更多细节。