我有一个对象数组,我将返回使用不同方法中的对象,但由于某种原因,它说“并非所有代码路径都返回值”
这是代码....
private object[] runTests(string banText, object tabControlName, int runThisTest, string testName)
{
if (stopTests == false)
{
var tabPageBrowser = new TabPage();
var Browser = new WebBrowser();
(tabControlName as TabControl).TabPages.Add(tabPageBrowser);
tabPageBrowser.Name = tabControlName.ToString();
tabPageBrowser.Text = testName;
tabPageBrowser.Font = new System.Drawing.Font("Trebuchet MS", 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
Browser.Dock = DockStyle.Fill;
Browser.Url = new Uri(testStrings(runThisTest, banText));
Browser.Name = tabControlName.ToString();
Browser.ScriptErrorsSuppressed = true;
tabPageBrowser.Controls.Add(Browser);
try
{
while (Browser.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
}
catch
{
return null;
}
IntPtr pHandle = GetCurrentProcess();
SetProcessWorkingSetSize(pHandle, -1, -1);
object[] browserObjects = new object[2];
browserObjects[0] = tabPageBrowser;
browserObjects[1] = Browser;
if (browserObjects != null)
{
return browserObjects;
}
}
}
我看不出我做错了什么,请你帮忙吗?谢谢!
答案 0 :(得分:16)
如果
,该方法不会返回stopTests == true
- 或 -
browserObjects == null
答案 1 :(得分:4)
提示:尝试查找未通过任何return
的路径。
答案 2 :(得分:4)
在所有代码路径中返回一个值
答案 3 :(得分:2)
Getter或accessor方法必须始终返回原始值或对象。
在你的例子中,你说
private object[] runTests(...) // Which means that no matter what, this method must return object[] or throw an exception
比你有条件:
if(my_condition_is_met)
{
do_some_processing();
}
现在,如果不满足条件,那么你不会返回任何东西,当我们在第一行说我们将返回对象数组时。
原始,但希望有道理......
答案 4 :(得分:2)
在您的代码中,您没有其他部分,所以我在这里返回null。
if (stopTests == false)
{
//your code
}
else
return null;
答案 5 :(得分:1)
return browserObjects;
抛弃if语句。从技术上讲,如果语句总是命中,但编译器不会那么深(虽然代码契约会那么深)