Powershell 如果一个部分出错,如何强制函数中断

Powershell 如果一个部分出错,如何强制函数中断,powershell,Powershell,当调用的脚本之一发生错误时,我试图使函数中断并回显。我不能让它工作 function FOOBAR($v1, $v2, $v3, $v4) { try{Python foo.py $v1 $v3 $v4 | Out-Host} catch { echo "foo.py failed" break} try{Python bar.py $v1 $v2 $v3 | Out-Host} catch { echo "bar.py failed"

当调用的脚本之一发生错误时,我试图使函数中断并回显。我不能让它工作

function FOOBAR($v1, $v2, $v3, $v4) {

    try{Python foo.py $v1 $v3 $v4 | Out-Host}
    catch { echo "foo.py failed"
        break}

    try{Python bar.py $v1 $v2 $v3 | Out-Host}
    catch { echo "bar.py failed"
        break}

    try{Invoke-Expression -Command "foo.ps1 $v1 $v2 $v3 $v4" | Out-Host}
    catch { echo "foo.ps1 failed"
        break}

    try{Invoke-Expression -Command "bar.ps1 $v2 $v3 $v4" | Out-Host}
    catch { echo "bar.ps1 failed"
        break}
}

如果
python.exe
失败时抛出终止错误,我会感到惊讶。不过,它可能会给出一些非零退出代码(您可以使用
$?
)进行测试)。它可以按预期工作。如果foo.py失败,它将破坏整个函数FOOBAR。如果删除中断,则所有操作都将被执行。但按照你的预期,它应该会坏,所以它会工作。如果你愿意,我可以发布答案和截图。返回语句将退出一个函数。如果您希望还可以返回回显的注释,也可以尝试使用陷阱。中断:
函数中断{trap{“错误已被捕获”;中断;}1/$null;“函数执行结束”。}
继续:
函数继续{trap{“错误捕获”;继续;}1/$null;“函数已完成”。}
如果
python.exe
失败时抛出终止错误,我会感到惊讶。不过,它可能会给出一些非零退出代码(您可以使用
$?
)进行测试)。它可以按预期工作。如果foo.py失败,它将破坏整个函数FOOBAR。如果删除中断,则所有操作都将被执行。但按照你的预期,它应该会坏,所以它会工作。如果你愿意,我可以发布答案和截图。返回语句将退出一个函数。如果您希望还可以返回回显的注释,也可以尝试使用陷阱。中断:
函数中断{trap{“已捕获错误”;中断;}1/$null;“函数执行结束”。}
继续:
函数继续{trap{“捕获错误”;继续;}1/$null;“函数已完成”。}