PowerShell 错误处理:try/catch 为什么抓不住你的错误
凌晨两点,同步脚本跑完了。日志里一串红色报错,但脚本继续往下执行,最后打印出「完成,成功 0 个文件」,退出码 0。CI 显示绿色,直到第二天业务方问:数据怎么没更新?
问题不在 Copy-Item,而在于 PowerShell 的错误模型和大多数人的直觉不一样:不是所有错误都会中断执行,也不是所有错误都能被 try/catch 捕获。这篇文章从最小复现开始,把这件事讲清楚。
一、PowerShell 有两类错误
PowerShell 把错误分成两类: