2

以下 powershell 脚本会产生一个非常无异常的输出:

try {
    throw "some exception"
    echo "check point"
}
catch
{
    echo "catch"
    throw "some other exception"
    exit(-1)
}
echo "finish"

输出:

catch
finish

我会通过未捕获的异常throw "some exception"和脚本无法退出脚本来退出finish

即使 Powershell 设置为在未捕获的异常之后继续,我也希望它能够执行exit(-1)并且永远不会到达finish.

谁能解释这种行为?

4

1 回答 1

1

exit(-1)是无法访问的,因为前一行 ,throw "some other exception"引发了一个异常,该异常绕过了该块的其余部分。

我看到在两种情况下达到“完成”:

  • 正如培根比特所说,何时$ErrorActionPreference设置为"SilentlyContinue".
  • 代码被粘贴到交互式 shell(而不是从 .ps1 文件中运行),在这种情况下,它会将最后一行作为手动命令运行。
于 2015-09-22T21:34:05.907 回答