以下面的例子为例。
Function Test-Function {
try {
[int]$var.ToString()
}catch{
Write-Error "Error inside Function"
}
}
try {
Test-Function
}catch{
Write-Error "Error inside try/catch of script"
}
Test-Function
本身正在产生一个错误(在这种情况下是故意的,以测试这种行为),因此命中它自己的捕获。但是,脚本中的函数调用本身也包含在 Try Catch 语句中,但脚本只显示函数的捕获。这是设计使然吗?
答案是如何try
-catch
工作和做什么Write-Error
。从Doc.Microsoft我们知道......
Write-Error cmdlet 声明了一个非终止错误
看看About_Try_Catch_Finally我们看到它......
描述如何使用 Try、Catch 和 finally 块来处理终止错误。
在两个引号中都强调我的
Try catch 不会从其捕获输出Write-Error
,这是设计使然。如果要传递终止错误,请使用throw
Function Test-Function {
try {
[int]$var1.ToString()
}catch{
throw "Error inside Function"
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句