Powershell错误处理:如果未发生错误,请执行某些操作
我一直在找这个,但似乎找不到。 我有一个带有try{}catch{}语句的脚本。如果没有发生错误,我想添加一个操作 乙二醇 如何测试语句中是否没有错误 提前谢谢Powershell错误处理:如果未发生错误,请执行某些操作,powershell,try-catch,Powershell,Try Catch,我一直在找这个,但似乎找不到。 我有一个带有try{}catch{}语句的脚本。如果没有发生错误,我想添加一个操作 乙二醇 如何测试语句中是否没有错误 提前谢谢 Walter清除自动变量后,检查该变量$error $error.clear() try { something } catch { "Error occured" } if (!$error) { "No Error Occured" } 另一种方式: $ErrorOccured = $false try { $Erro
Walter清除自动变量后,检查该变量
$error
$error.clear()
try { something }
catch { "Error occured" }
if (!$error) { "No Error Occured" }
另一种方式:
$ErrorOccured = $false
try
{
$ErrorActionPreference = 'Stop'
...something...
}
catch
{
"Error occured"
$ErrorOccured=$true
}
if(!$ErrorOccured) {"No Error Occured"}
.那么
something
If ($?)
{
"No error"
}
Else
{
"Error"
}
这也适用于非终止错误。太好了!谢谢我知道这必须很简单:)我喜欢这个解决方案,但我认为如果可以的话,最好创建一个变量并在相关的
-ErrorVariable
参数中使用它。使用全局错误堆栈并清除它会让人感觉这是一种不好的做法,或者有丢失错误的风险。如果您还想捕获非终止错误,请不要忘记在try块的开头设置$ErrorActionPreference='Stop'
。顺便说一句,这不会捕获从控制台EXE返回的错误代码。谢谢@KeithHill,我会添加它。另一个选项是将“无错误”代码放在try块中的语句之后:try{something;“no error”}catch{error}
。如果“某物”因终止错误而失败,执行将跳过“无错误”代码并进入catch块。(当然,“无错误”代码本身可能引发异常,因此这种方法并不总是合适的。)
something
If ($?)
{
"No error"
}
Else
{
"Error"
}