gpt4 book ai didi

c# - 如何修复 : Use of unassigned local IWebElement variable

转载 作者:太空宇宙 更新时间:2023-11-03 22:49:19 25 4
gpt4 key购买 nike

对于下面的代码,

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(); 但它们对我不起作用。

有什么帮助吗?

附言。我试图在 catch 语句中循环并找到它,这就是为什么我需要 try 之外的元素声明,以及之后的 Click()

最佳答案

编译器帮助修复错误。他告诉您,如果 element 初始化期间出现异常,这将失败并在 element.Click() 处出现 NullReferenceException。所以他希望你在任何情况下都分配一些东西(或作为默认值)。您有多种选择来修复...

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

关于c# - 如何修复 : Use of unassigned local IWebElement variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48229293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com