gpt4 book ai didi

exception - 防止第三方 dll 使 PowerShell 崩溃

转载 作者:行者123 更新时间:2023-12-03 16:01:27 27 4
gpt4 key购买 nike

我正在创建一个使用非托管 API 的 PowerShell 模块。它的工作方式如下所示:

PowerShell Module
|
˅
.NET Wrapper DLL
|
˅
Native DLL

这个本地 DLL 有两种方式来传达操作是否失败 - 将状态代码写入标准输出或抛出 Win32 异常。您可以通过调用 API 的 UseExceptions() 来指定您的偏好。或 DontUseExceptions() .然而,这两种选择都很糟糕:
  • 无一异常(exception),每当我成功调用函数时,0打印在屏幕上。如果函数调用失败,则会在屏幕上打印一条警告消息。这不仅使检测错误变得困难,而且还会使我的模块向用户的输出困惑。
  • 除了异常,如果出现小错误,整个 PowerShell 进程都会崩溃,因为它是 Win32 异常而不是 .NET 异常。

  • 有没有办法防止 Win32 异常使整个 PowerShell 进程崩溃?或者有没有办法拦截这个DLL的标准输出并自己解析状态码?

    我使用的 API 是广泛使用的 Geographic Data Abstraction Library .

    最佳答案

    在您的 .NET Wrapper DLL 中 try catch SEHException 以查看是否可以捕获 Win32 异常。另一种选择是使用 CLI/C++ 编写 .NET 包装器,然后使用 C++ 异常处理机制来捕获异常。

    关于exception - 防止第三方 dll 使 PowerShell 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12434065/

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