首页/系统/Windows 运维速查/try/catch/finally 结构化错误处理
PowerShell 基础66 条

try/catch/finally 结构化错误处理

捕获并处理错误:catch 用 $_ 拿错误对象、finally 做清理;需配合 -ErrorAction Stop 才能兜住非终止错误。

Windows 运维速查系统更新于 2026-10-12
用途捕获处理可预期错误
语法try { } catch [错误类型] { } finally { }
要点可写多个 catch 按类型匹配;finally 总会执行

常用示例

常用示例
try {
  Get-Item D:\nope -ErrorAction Stop
} catch {
  Write-Warning $_.Exception.Message
} finally {
  '清理完成'
}
catch 里的 $_ 是 ErrorRecord:$_.Exception 拿异常对象,$_.CategoryInfo 看归类。

易错点

  • 非终止错误不会触发 catch,除非命令加 -ErrorAction Stop 或全局设为 Stop
  • catch 块内输出会混入结果流,调试信息用 Write-Warning 或 Write-Verbose

数据来源与参考

  • Microsoft Learn:about_Try_Catch_Finally

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌