PowerShell 异常处理
PowerShell 中的异常处理
PowerShell 的异常种类
终止型错误 Terminating Error
此类错误可以被 try { } catch { }
语句捕获到,并可以从 $PSItem
对象取得错误信息,类似编程语言的 Exception
。
非终止型错误 Non-Terminating Error
此类错误不能被 try { } catch { }
语句捕获到,因为它将错误信息输出到了终端的 标准输出,具体表现就是在终端里会看见一段错误文本。
-ErrorAction
这个选项是用于改变非终止型错误的行为的,默认是Continue
,表示出错时,继续执行后续的命令,它的值有以下几种:
Continue
: 显示错误信息并继续执行后面的命令,这是默认值。Ignore
: 这个值是在 PowerShell 3.0 引入的。它不显示错误信息并继续执行后面的命令。与SilentlyContinue
不同的是,它也不会把错误信息添加到$Error
变量中。Inquire
: 显示错误信息并弹框与用户交互。SilentlyContinue
: 不显示错误信息并继续执行后面的命令。Stop
: 显示错误信息并且退出脚本的执行。Suspend
: 这个值只适用于 workflow。当 terminating error 发生时执行会暂停下来,然后决定是否恢复执行。
$ErrorActionPreference
这个环境变量是 -ErrorAction
的全局设置
如何判断脚本或者命令出错了?
处理终止型错误 Terminating Error
可以通过 try {} catch {}
捕获,并通过 Exit
方法中断脚本执行,如 Exit 1
(脚本成功执行返回值是 0)
处理非终止型错误 Non-Terminating Error
第一种:通过更改 -ErrorAction
或 $ErrorActionPreference
为 Stop
来自动中断执行
第二种:通过判断 $?
的值为 True
还是 False
来处理
需要错误处理的常见场景
- CI 管道执行时,命令失败了,但是管道却成功了,所以我们需要对出错的命令进行异常处理,从而时管道终止