对于以下代码,
IWebElement element; // = new WebElement();
try
{
element = driver.FindElement(By...);
}
catch (Exception)
{
}
element.Click();
如何解决Use of unassigned local variable
的错误?
我知道Use of unassigned local variable
的错误,解决方法是最初为其分配一些内容,但我已尝试new WebElement();
和new IWebElement();
,但它们对我不起作用。
有任何帮助吗?
PS。我试图在catch
语句中循环找到它,这就是为什么我需要try
之外的元素声明和Click()
之后的元素声明。
答案 0 :(得分:3)
编译器有助于修复错误。如果在NullReferenceException
初始化过程中出现异常,他告诉您如果在element.Click()
element
,则会失败。所以他希望你在任何情况下(或默认值)分配一些东西。您有多个选项可以修复......
在try
:
try
{
element = driver.FindElement(By...);
element.Click(); // safe because there was no exception
}
catch (Exception)
{
// empty catch is bad, log this at least
}
“隐藏”编译器错误,但通过为变量分配内容来释放潜在的错误:
IWebElement element = null;
try
{
element = driver.FindElement(By...);
}
catch (Exception)
{
// empty catch is bad, log this at least
}
element.Click(); // still a bug if there was an exception this will cause a NullReferenceException
如果您使用if(element != null) element.Click();
,则此选项完全正常。
或者您可以使用catch
/ finally
分配内容(这里是最糟糕的选项):
IWebElement element;
try
{
element = driver.FindElement(By...);
}
catch (Exception)
{
element = null;
}
但是你必须检查null
,if(element != null)
或者:
element?.Click(); // if not null Click is called