gpt4 book ai didi

c# - 你能在 C# 代码中捕获 native 异常吗?

转载 作者:IT王子 更新时间:2023-10-29 03:41:39 26 4
gpt4 key购买 nike

在 C# 代码中,您能否捕获从某个非托管库深处抛出的 native 异常?如果是这样,您需要做任何不同的事情来捕捉它还是标准的 try...catch 得到它?

最佳答案

您可以使用 Win32Exception并使用它的 NativeErrorCode 属性来适本地处理它。

// http://support.microsoft.com/kb/186550
const int ERROR_FILE_NOT_FOUND = 2;
const int ERROR_ACCESS_DENIED = 5;
const int ERROR_NO_APP_ASSOCIATED = 1155;

void OpenFile(string filePath)
{
Process process = new Process();

try
{
// Calls native application registered for the file type
// This may throw native exception
process.StartInfo.FileName = filePath;
process.StartInfo.Verb = "Open";
process.StartInfo.CreateNoWindow = true;
process.Start();
}
catch (Win32Exception e)
{
if (e.NativeErrorCode == ERROR_FILE_NOT_FOUND ||
e.NativeErrorCode == ERROR_ACCESS_DENIED ||
e.NativeErrorCode == ERROR_NO_APP_ASSOCIATED)
{
MessageBox.Show(this, e.Message, "Error",
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
}
}

关于c# - 你能在 C# 代码中捕获 native 异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/150544/

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