gpt4 book ai didi

PowerShell 表单,尝试/捕获未正确停止应用程序

转载 作者:行者123 更新时间:2023-12-03 07:49:26 25 4
gpt4 key购买 nike

问题

我正在使用 PowerShell 创建一个应用程序,该应用程序使用使用 Forms 创建的 GUI。在尝试保持模块化编程风格时,我或多或少地撞到了一堵我似乎找不到解决方法的墙,并希望社区可以提供帮助。

在我的应用程序中,我尝试使用 try/catch 语句创建自定义错误捕获,但发现当我调用工厂函数并且该函数有错误时,应用程序将按预期显示所述错误,但将继续处理好像成功了……

我什至尝试过使用 exitbreak ,但在我的自定义错误之后立即出现“未处理的异常”错误。我什至设置了$ErrorActionPreference = "Stop"但仍然遇到这个问题。

这是我的代码的简化示例,以便您可以看到发生了什么:

Button_Click = {
ValidatePathing -BackupPath $BackupPath.Text
If (!(Test-Path $BackupPath.Text)) {
# Attempt to Create it
}

# bunch of code
}

Function ValidatePathing ([string]$BackupPath){
Try {
If (!$BackupPath) {
throw "customError1"
}

If ($BackupPath -match "\|") {
throw "customError2"
}
}
Catch {
If ($_.Exception.Message -eq "customError1") {
[System.Windows.Forms.MessageBox]::Show("some message")
}
ElseIf ($_.Exception.Message -eq "customError2") {
[System.Windows.Forms.MessageBox]::Show("some message")
}
}
}

不幸的是,当代码遇到像 ValidatePathing 这样的部分时并且发生自定义错误,错误消息将按预期显示,但代码将跳过/通过该部分并继续处理其余代码,尽管出现错误。

问题

有没有人足够了解 PowerShell 来解释如何正确处理这样的情况,以便代码在遇到这样的嵌套错误后停止运行?

最佳答案

确保您的 Try正在处理一个终止错误,因为它旨在处理,利用 $PSCmdlet.ThrowTerminatingError() .这可能需要 ErrorRecord object 作为构造函数,允许您捕获特定的异常类型。

关于PowerShell 表单,尝试/捕获未正确停止应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46328274/

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