【发布时间】:2019-03-02 22:05:45
【问题描述】:
我想消除一些重复的代码。谁能让这段代码更短更好?
switch (now.site)
{
case item.SITE.AMAZON:
try
{
price = driver.FindElement(By.XPath("//*[@id=\"priceblock_ourprice\"]")).Text;
fetched = true;
}
catch
{
try
{
price = driver.FindElement(By.XPath("//*[@id=\"priceblock_dealprice\"]")).Text;
fetched = true;
}
catch
{
fetched = false;
}
}
break;
case item.SITE.ALI:
try
{
price = driver.FindElement(By.XPath("//*[@id=\"j-sku-discount-price\"]")).Text;
fetched = true;
}
catch
{
try
{
price = driver.FindElement(By.XPath("//*[@id=\"j-sku-price\"]")).Text;
fetched = true;
}
catch
{
fetched = false;
}
}
break;
}
}
【问题讨论】:
-
请不要使用异常编码。例外是针对特殊情况的。如果您尝试在普通代码中使用它们,那么它们也可以称为
System.Ordinary。 -
是否有机会获得minimal reproducible example,以便我们提供干净的解决方案?我至少应该能够复制、粘贴和编译您的代码。
-
真正的网上冲浪会导致许多例外情况。如果 C# selenium 知道元素存在或可点击,我同意你的看法。
-
然后捕获抛出的特定异常,而不是每个异常。这是一个不好的做法。然后抽象出代码,以便您只处理一次。
-
好的,感谢它找到特定异常的权利
标签: c# oop refactoring