如何更好地编码此代码



我有以下代码:

string name1;
string name2;
string name3;
try
{
    name1 = htmlDoc.DocumentNode.SelectSingleNode("//input[@name='name1']").GetAttributeValue("value", "");
    name2 = htmlDoc.DocumentNode.SelectSingleNode("//input[@name='name2']").GetAttributeValue("value", "");
    name3 = htmlDoc.DocumentNode.SelectSingleNode("//input[@name='name3']").GetAttributeValue("value", "");
}
catch(Exception)
{
    name1 = "";
    name2 = "";
    name3 = "";
}

即使认为我找不到案例,也有可能找不到节点并且函数 SelectSingleNode() 返回 null。但是,如果其中一个给出错误,则所有 3 个字符串都将为空。我可以像下面的代码一样解决它,但我不喜欢像这样连续调用 3 个 try/catch,有没有更好的方法可以做到这一点?

try
{
    name1 = htmlDoc.DocumentNode.SelectSingleNode("//input[@name='name1']").GetAttributeValue("value", "");
} catch (Exception)
{
    name1 = "";
}
try
{
    name2 = htmlDoc.DocumentNode.SelectSingleNode("//input[@name='name2']").GetAttributeValue("value", "");
} catch (Exception)
{
    name2 = "";
}
try
{
    name3 = htmlDoc.DocumentNode.SelectSingleNode("//input[@name='name3']").GetAttributeValue("value", "");
} catch (Exception)
{
    name3 = "";
}

检查以下解决方案可能会对您有所帮助。

        try {
        if (null != htmlDoc.DocumentNode.SelectSingleNode("//input[@name='name1']") && null != htmlDoc.DocumentNode
                .SelectSingleNode("//input[@name='name1']").GetAttributeValue("value", "")) {
            name1 = htmlDoc.DocumentNode.SelectSingleNode("//input[@name='name1']").GetAttributeValue("value", "");
        } else {
            name1 = null;
        }
        if (htmlDoc.DocumentNode.SelectSingleNode("//input[@name='name2']") && null != htmlDoc.DocumentNode
                .SelectSingleNode("//input[@name='name2']").GetAttributeValue("value", "")) {
            name2 = htmlDoc.DocumentNode.SelectSingleNode("//input[@name='name2']").GetAttributeValue("value", "");
        } else {
            name2 = null;
        }
        if (htmlDoc.DocumentNode.SelectSingleNode("//input[@name='name3']") && null != htmlDoc.DocumentNode
                .SelectSingleNode("//input[@name='name3']").GetAttributeValue("value", "")) {
            name3 = htmlDoc.DocumentNode.SelectSingleNode("//input[@name='name3']").GetAttributeValue("value", "");
        } else {
            name3 = null;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

相关内容

  • 没有找到相关文章

最新更新