PowerShell:
处理错误
如何操作:
# 基本的 Try-Catch 来处理异常
try {
# 可能触发错误的代码
$result = 1 / 0
} catch {
# 如果发生错误该怎么办
Write-Host "哎呀,出现错误了:$_"
}
# 输出自定义错误消息
try {
Get-Item "nonexistentfile.txt" -ErrorAction Stop
} catch {
Write-Host "找不到文件。"
}
# 使用 $Error 变量检查最后一个错误
深入了解
自从PowerShell作为Monad推出以来,它已经走过了很长的路。随着时间的推移,错误处理变得更加健壮,提供了类似于其他编程语言的功能。try-catch-finally
语法就是类似于C#等语言的一个交叉引用。在此之前,脚本编写者严重依赖于检查条件和使用 $Error
自动变量。
PowerShell还拥有两种主要的错误类型:终止性错误和非终止性错误。终止性错误将导致脚本停止,除非在 try-catch
块中捕获,而非终止性错误则不会,除非你指定了 -ErrorAction Stop
。这种区分至关重要,因为它赋予了对错误处理的细粒度控制,决定一个错误是否真的需要停止整个脚本,或者可以简单地记录并忽略。
PowerShell的错误处理还允许使用 finally
块,无论是否发生错误,它都会运行。这对于清理任务非常好。
当你深入脚本编写时,你还可以处理特定的异常类型,这会给你更细粒度的控制。
另外,还有老派的 -ErrorVariable
参数可以在不抛出异常的情况下捕获错误。而 $?
变量会告诉你上一个操作是否成功。它们是方便的工具,尽管没有扎实的 try-catch
来得干净。