我经常写的脚本试图删除它没有能力的文件。这会抛出一些错误,一个错误,一个没有足够的访问权限,另一个错误,它后来尝试删除包含第一个问题的非空文件夹。它们很好,但是如果每次抛出的都不是这两条消息之一的话,我还是会输出错误消息。
try-catch块没有捕获任何内容,因为它们是错误而不是异常。
try
{
Remove-Item D:\backup\* -Recurse
Write-Host "Success" -ForegroundColor Green
Write-Host $error.count
}
catch
{
Write-Host "caught!" -ForegroundColor Cyan
}
即使$error.count
内部有错误,它仍然可以成功完成try-block。我是否被迫手动检查每次是否有任何新的$ error,或者有更好的方法吗?谢谢!
答案 0 :(得分:2)
在Try / Catch中,仅在终止错误时调用Catch块。
使用ErrorAction
通用参数强制终止所有错误:
try
{
Remove-Item D:\backup\* -Recurse -ErrorAction Stop
Write-Host "Success" -ForegroundColor Green
Write-Host $error.count
}
catch
{
Write-Host "caught!" -ForegroundColor Cyan
}
答案 1 :(得分:0)
或使用全局错误:
try {
$erroractionpreference = 'stop'
Remove-Item D:\backup\* -Recurse
Write-Host "Success" -ForegroundColor Green
Write-Host $error.count
} catch {
Write-Host "caught!" -ForegroundColor Cyan
}