“不是所有的代码路径都返回一个值”错误BLL
我想写一个方法try
catch
其中,我从Web服务获取数据,并返回数据为string[]
。“不是所有的代码路径都返回一个值”错误BLL
我很努力地返回值。你介意看我的代码?:
public static string[] UserDetailsWebService(string username, string password)
{
string[] array = null;
using(WebServiceUser.Users use = new WebServiceUser.Users())
{
try
{
WebServiceUser.UserGridList Grid = use.GetUserDetails(username, password, username);
array = new string[] { Grid.FirstName, Grid.LastName };
}
catch (Exception ex)
{
if (ex is NullReferenceException || ex is HttpResponseException
|| ex is WebException || ex is System.Net.Sockets.SocketException)
{
//throws etc...
}
else
{
//throws etc...
}
}
return array;
}
}
的问题是,我得到这个错误:
并非所有的代码路径返回一个值。
请注意,这里的函数应该返回一个数组string
。
在功能块的末尾移动return array;
确保我们始终返回某些内容。
public static string[] UserDetailsWebService(string username, string password)
{
string[] array = null;
using (WebServiceUser.Users use = new WebServiceUser.Users())
{
try
{
WebServiceUser.UserGridList Grid = use.GetUserDetails(username, password, username);
array = new string[] { Grid.FirstName, Grid.LastName };
}
catch (Exception ex)
{
if (ex is NullReferenceException || ex is HttpResponseException
|| ex is WebException || ex is System.Net.Sockets.SocketException)
{
//throws etc...
}
else
{
//throws etc...
}
}
}
return array;
}
这应该如何解决问题?我看到的唯一区别是你把'return'移到''使用' –
之外'我不认为这是解决方案。 '使用'块内的“返回”是完全可以接受的,不需要将它移到外面。 –
假设'try'块中存在错误(在您的代码中)。在这种情况下,没有任何回报。 –
如果抛出异常,'return'不会被击中。你还需要'try/catch'之外的'return array'吗? –
我还会捕获具有catch-em-all'catch(Exception)'块的特定异常。这会让你的代码更清洁。 –
嘿家伙,问题不是catch(异常),我只需要返回从web服务取得的数据,这意味着string []数组,我不知何故在那里做错了什么,我不能填充数组并返回它。 – SmackDat