在C#中处理来自非托管dll的异常

Stu*_*ens 6 c# dll unmanaged

我有用C#编写的以下函数

public static string GetNominativeDeclension(string surnameNamePatronimic)
{
    if(surnameNamePatronimic == null) 
       throw new ArgumentNullException("surnameNamePatronimic");

IntPtr[] ptrs = null;
try
{
    ptrs = StringsToIntPtrArray(surnameNamePatronimic);

    int resultLen = MaxResultBufSize;
    int err = decGetNominativePadeg(ptrs[0], ptrs[1], ref resultLen);
    ThrowException(err);
    return IntPtrToString(ptrs, resultLen);
}
catch
{
    return surnameNamePatronimic;
}
finally
{
    FreeIntPtr(ptrs);
}
Run Code Online (Sandbox Code Playgroud)

}

函数decGetNominativePadeg在非托管dll中


[DllImport("Padeg.dll", EntryPoint = "GetNominativePadeg")]
private static extern Int32 decGetNominativePadeg(IntPtr surnameNamePatronimic,
    IntPtr result, ref Int32 resultLength);

并抛出异常: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
C#代码中的catch实际上并没有捕获它.为什么?如何处理这个异常?
谢谢您的帮助!