给定以下无效的XML:
<?xml版本=“ 1.0”编码=“ utf-8”?>
此PowerShell将捕获无效的强制转换异常:
$ path ='c:\ temp \ invalidXml.xml'
尝试{
$ myXml = [xml](获取内容-路径$路径-原始)
}捕获[System.Management.Automation.PSInvalidCastException] {
“'$ path'不是有效的XML文档”
}
但是,我只希望catch块能够捕获与将文件的内容转换为XML有关的问题。没有其他类型的强制转换例外。可以这样完成:
$ path ='c:\ temp \ invalidXml.xml'
尝试{
$ myXml = [xml](获取内容-路径$路径-原始)
#一些其他代码,可能导致PSInvalidCastException抛出。例如
#$ myDate = [DateTime]“不是日期”
}捕获[System.Management.Automation.PSInvalidCastException] {
如果($ _。Exception.InnerException -as [System.Xml.XmlException]){
“'$ path'不是有效的XML文档”
}其他{
抛出#不是我们想要捕获的异常,所以将其扔回
}
}
但是,这感觉很混乱。有没有更好的办法?例如。类似于下面的内容(我已经尝试过了,但是它不起作用;因为在这里,我们试图捕获内部异常而不是真正的异常)。
$ path ='c:\ temp \ invalidXml.xml'
尝试{
$ myXml = [xml](获取内容-路径$路径-原始)
}捕获[System.Xml.XmlException] {
“'$ path'不是有效的XML文档”
}