gpt4 book ai didi

c# - ThrowTerminatingError 在 C# 中如何工作?

转载 作者:太空狗 更新时间:2023-10-29 23:37:51 25 4
gpt4 key购买 nike

我有以下用 C# 编写的 cmdlet,它基本上只是抛出一个错误:

[Cmdlet("Use", "Dummy")]
public class UseDummyCmdlet :PSCmdlet
{
protected override void ProcessRecord()
{
var errorRecord = new ErrorRecord(new Exception("Something Happened"), "SomethingHappened", ErrorCategory.CloseError, null);
ThrowTerminatingError(errorRecord);
}
}

我假设(我可能是错的),这在 PowerShell 中是等价的)

Function Use-Dummy()
{
[CmdletBinding()]
Param()

process
{
$errorRecord = New-Object System.Management.Automation.ErrorRecord -ArgumentList (New-Object System.Exception), 'SomethingHappened', 'NotSpecified', $null
$PSCmdlet.ThrowTerminatingError($errorRecord)
}
}

PowerShell 版本的行为符合预期:

Use-Dummy : Exception of type 'System.Exception' was thrown.
At line:1 char:10
+ use-dummy <<<<
+ CategoryInfo : NotSpecified: (:) [Use-Dummy], Exception
+ FullyQualifiedErrorId : SomethingHappened,Use-Dummy

然而,C# 版本崩溃,并显示以下信息:

An exception of type 'System.Management.Automation.PipelineStoppedException' occurred in System.Management.Automation.dll but was not handled in user code

Additional information: The pipeline has been stopped.

我做错了什么?

最佳答案

可以确认,这是一个环境问题,而且是一个非常奇怪的问题。

基本上,如果您按照说明进行操作 here ,然后去调试任何二进制模块,如果你调用 ThrowTerminatingError,它会因 PipelineStoppedException 而崩溃。

现在我需要某种修复/解决方法。

编辑:找到修复,在项目属性中选中“启用 native 代码调试”。

关于c# - ThrowTerminatingError 在 C# 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32947289/

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