JNK*_*JNK 7 error-handling powershell
我有PS模块,其中包含许多用于单个功能的脚本.还有一个"库"脚本,其中包含许多辅助函数,这些函数可由模块中使用的函数调用.
我们调用外部函数ReadWeb,它使用辅助函数ParseXML.
本周我遇到了一个问题,内部帮助ParseXML函数中有错误处理.该函数包含一个try/catch,并在catch中查询:
$Error[0].Exception.InnerException.Message
...为了将错误作为变量传递回外部作用域并确定是否ParseXML有效.
对于特定情况,我在调用时遇到索引错误ReadWeb.根本原因结果$Error是Catch块中的对象ParseXML回来了$Null.
我改变了错误处理来检查$Error -eq $Null,如果是,应使用$_在Catch确定该错误信息是什么.
我的问题是:什么原因$Error是$null里面的Catch?
编辑:基于 Powershell 3 的答案。
\n$error是由 Powershell 处理的自动变量:about_Try_Catch_Finally中详细描述的第 3 个 \xc2\xa7 。
它被视为 Catch 块的上下文,因此可用作$_。\n由于 Catch 块与 Try 是不同的块,因此$error自动变量将被重置并被赋值$null。