gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:47:40 24 4
gpt4 key购买 nike

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

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

<pre><code>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);
}
</code></pre>

<p>}
</p>

函数 decGetNominativePadeg 在非托管 dll 中


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

并抛出异常:试图读取或写入 protected 内存。这通常表示其他内存已损坏
C# 代码中的捕获实际上并没有捕获它。为什么?如何处理这个异常?
感谢您的帮助!

最佳答案

“CLR 不再将损坏的进程状态的异常传递给托管代码中的异常处理程序。”

.NET Framework 4 Migration Issues .

只需将其添加到配置文件中: http://msdn.microsoft.com/en-us/library/dd638517.aspx

关于c# - 在 C# 中处理来自非托管 dll 的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2854942/

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