当我把这个片段放到我的一台机器上的powershell v2.0上时
try{
$test = 1/0
write-host "not terminating"
}
Catch{
write-host "caught"
}
write-host "continuing"
错误会终止脚本并且不会捕获它并且不会继续。我得到的不能除以零错误。
Cannot divide by zero exception message
但是在我的v4.0中,我得到了这个输出
caught
continuing
当我把它放入我的v4.0 powershell时,它会捕获终止错误并继续。什么是交易,这是v2.0的具体问题吗?如何让脚本在powershell v2.0中继续并捕获错误?
答案 0 :(得分:0)
尝试在try块中添加$ErrorActionPreference = "Stop"
。这会将所有错误转换为终止错误。 powershell的v2和v4之间可能存在问题,其中v4将错误定义为终止,但v2不定义。 Try / catch语句仅适用于终止错误。
如果这不起作用,请尝试编写类似的内容:
try {
$test = 1/0
if($?) {
write-host "not terminating"
}
else {
$errors[0].Exception
}
}
$?是一个自动变量,用于存储上次操作是否成功完成的信息。