asp.net - 即使发现 nullException,仍继续运行代码

标签 asp.net xml vb.net exception null

我正在运行一段代码,在其中读取 XML 文件并使用 vb.net 将其保存在局部变量中。

遗憾的是,并非所有 XML 的结构都相同,因此我遇到了一个问题:如果我尝试映射的其中一个字段丢失,它将停止运行代码并提示错误。

我希望,如果某个字段不是基金,请将其保留为空并运行代码直到结束。

我尝试使用 try 和 catch,但没有成功。

Var1 = xmlNode.SelectSingleNode("Test1").InnerText
Var2 = xmlNode.SelectSingleNode("Test2").Value
Var3 = xmlNode.SelectSingleNode("Test3").InnerText

现在,如果其中一个 xml 中缺少 Var2,它将停止运行代码,并且即使存在 Var3,也不会获取该 Var3。

谢谢

最佳答案

如果您使用的是 Visual Studio 2015,则可以使用 null 传播运算符 ?

Var1 = xmlNode?.SelectSingleNode("Test1")?.InnerText
Var2 = xmlNode?.SelectSingleNode("Test2")?.Value
Var3 = xmlNode?.SelectSingleNode("Test3")?.InnerText

如果你使用的是较旧的东西,那么你将不得不做这个长手:

If xmlNode IsNot Nothing Then 
    Dim node = xmlNode.SelectSingleNode("Test1")
    If node IsNot Nothing then Var1 = node.InnerText
    node = xmlNode.SelectSingleNode("Test2")
    If node IsNot Nothing then Var1 = node.Value
    'etc.
End If

请注意,您可以使用 Try...Catch 来完成此操作,但这将是丑陋的代码:

Try
    Var1 = xmlNode.SelectSingleNode("Test1").InnerText
Catch ex As Exception
     'ignore
End Try
Try
    Var2 = xmlNode.SelectSingleNode("Test2").Value
Catch ex As Exception
     'ignore
End Try
Try
    Var3 = xmlNode.SelectSingleNode("Test3").InnerText
Catch ex As Exception
     'ignore
End Try

因此,如果您有很多这样的内容,最好将其包装在一个函数中:

Public Shared Function GetNodeInnerText(node as XmlNode, nodeName As String) As String
    If node Is Nothing Then Return ""
    Dim singleNode = node.SelectSingleValue(nodeName)
    If singleNode Is Nothing Then Return ""
    Return singleNode.InnerText
End Function

关于asp.net - 即使发现 nullException,仍继续运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37673962/

相关文章:

asp.net - 从函数返回参数

.net - 寻找 .NET 库来进行支持多个源的身份验证

xml - 如何在 Zend Framework 应用程序中返回 XML

vb.net - ADO.Net 表值参数 (TVP) - 操作数类型冲突 : datetime2 is incompatible with int

vb.net - 恢复丢失的 VB.net 应用程序的方法

javascript - ASP.NET 阻止浏览器 'back'

asp.net - 编辑和重新显示内容时强制刷新缓存

android - 解析 XML 文件时出现非法参数异常

c# - 向 XML 中的组合框添加动态值?

vb.net - 嵌套 For 循环 vb.net