1
我正在創建一個使用非託管API的PowerShell模塊。它的工作方式看起來是這樣的:防止第三方DLL崩潰PowerShell
PowerShell Module
|
˅
.NET Wrapper DLL
|
˅
Native DLL
這個本地DLL具有通信的操作是否失敗與否的兩種方式 - 通過寫狀態代碼到標準輸出或通過拋出Win32異常。您可以通過調用API的UseExceptions()
或DontUseExceptions()
來指定您的偏好。然而,這兩個選項吸:
- 沒有例外,任何時候我做一個成功的函數調用,
0
得到打印在屏幕上。如果函數調用失敗,屏幕上會顯示一條警告消息。這不僅使檢測錯誤變得困難,而且還將我的模塊輸出混亂到用戶身上。 - 有例外,如果有小錯誤,整個PowerShell進程將崩潰,因爲它是Win32異常而不是.NET異常。
有沒有辦法阻止Win32異常崩潰整個PowerShell進程?或者有沒有辦法攔截這個DLL的stdout並自己解析狀態碼?
我使用的API是廣泛使用的Geographic Data Abstraction Library。